iOS學習筆記(十一)——JSON資料解析

來源:互聯網
上載者:User

     在之前的《iOS學習——xml資料解析(九)》介紹了xml資料解析,這一篇簡單介紹一下Json資料解析。JSON 即 JavaScript Object Natation,它是一種輕量級的資料交換格式,非常適合於伺服器與用戶端的互動,Json文法參考。關於在iOS平台上進行JSON解析,已經有很多第三方的開源項目,比如TouchJson,JSONKit,SBJon等,自從iOS5.0以後,蘋果SDK推出了內建的JSON解決方案NSJSONSerialization,這是一個非常好用的JSON產生和解析工具,效率也是比其他第三方開源項目的高很多,詳情可看。

圖片詳情可查看

NSJSONSerialization提供了Json資料封包、Json資料解析,NSJSONSerialization將JSON資料轉換為NSDictionary或NSArray解包方法,將NSDictionary、NSArray對象轉換為JSON資料(可以通過調用isValidJSONObject來判斷NSDictionary、NSArray對象是否可以轉換為JSON數 據)封包。這一篇將做簡單介紹。


Json資料封包
 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];    // isValidJSONObject判斷對象是否可以構建成json對象    if ([NSJSONSerialization isValidJSONObject:dic]){        NSError *error;        // 創造一個json從Data, NSJSONWritingPrettyPrinted指定的JSON資料產的空白,使輸出更具可讀性。        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];        NSString *json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];        NSLog(@"json data:%@",json);    }
Json資料解析

NSError *error;    //載入一個NSURL對象    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101120101.html"]];    //將請求的url資料放到NSData對象中    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];    //IOS5內建解析類NSJSONSerialization從response中解析出資料放到字典中    NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];    NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];    NSString *text = [NSString stringWithFormat:@"今天是 %@  %@  %@  的天氣狀況是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];    NSLog(@"weatherInfo:%@", text );
/**

* @author 張興業*  http://blog.csdn.net/xyz_lmn*  iOS入門群:83702688

*  android開發進階群:241395671

*  我的新浪微博:@張興業TBOW*/

參考:

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40010946-CH1-DontLinkElementID_1

http://www.w3school.com.cn/json/

http://www.ibm.com/developerworks/cn/web/wa-lo-json/

http://blog.sina.com.cn/s/blog_7018d3820101bdqz.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.