iOS學習筆記(十一)——JSON數據解析


     在之前的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 張興業
*  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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM