在之前的《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