日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

iOS中的JSON解析

發布時間:2024/7/23 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS中的JSON解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、在iOS中,JSON的常見解析方案有4種

(1)第三方框架:JSONKit、SBJson、TouchJSON(性能從左到右,越差)?

(2)蘋果原生(自帶):NSJSONSerialization(性能最好)


二、示例代碼:

(1)使用TouchJSon解析方法:(需導入包:#import "TouchJson/JSON/CJSONDeserializer.h")

[cpp]?view plaincopy
  • //使用TouchJson來解析北京的天氣??
  • -?(IBAction)btnPressTouchJson:(id)sender?{??
  • ????//獲取API接口??
  • ????NSURL?*url?=?[NSURL?URLWithString:@"http://m.weather.com.cn/data/101010100.html"];??
  • ????//定義一個NSError對象,用于捕獲錯誤信息??
  • ????NSError?*error;??
  • ????NSString?*jsonString?=?[NSString?stringWithContentsOfURL:url?encoding:NSUTF8StringEncoding?error:&error];??
  • ????NSLog(@"jsonString--->%@",jsonString);??
  • ????//將解析得到的內容存放字典中,編碼格式為UTF8,防止取值的時候發生亂碼??
  • ????NSDictionary?*rootDic?=?[[CJSONDeserializer?deserializer]?deserialize:[jsonString?dataUsingEncoding:NSUTF8StringEncoding]?error:&error];??
  • ????//因為返回的Json文件有兩層,去第二層內容放到字典中去??
  • ????NSDictionary?*weatherInfo?=?[rootDic?objectForKey:@"weatherinfo"];??
  • ????NSLog(@"weatherInfo--->%@",weatherInfo);??
  • ????//取值打印??
  • ????txtView.text?=?[NSString?stringWithFormat:@"今天是?%@??%@??%@??的天氣狀況是:%@??%@?",[weatherInfo?objectForKey:@"date_y"],[weatherInfo?objectForKey:@"week"],[weatherInfo?objectForKey:@"city"],?[weatherInfo?objectForKey:@"weather1"],?[weatherInfo?objectForKey:@"temp1"]];??
  • ??????
  • }??
  • (2)使用SBJson解析方法:(需導入包:#import "SBJson/SBJson.h")

    [cpp]?view plaincopy
  • //使用SBJson解析南陽的天氣??
  • -?(IBAction)btnPressSBJson:(id)sender?{??
  • ????NSURL?*url?=?[NSURL?URLWithString:@"http://m.weather.com.cn/data/101180701.html"];??
  • ????NSError?*error?=?nil;??
  • ????NSString?*jsonString?=?[NSString?stringWithContentsOfURL:url?encoding:NSUTF8StringEncoding?error:&error];??
  • ????SBJsonParser?*parser?=?[[SBJsonParser?alloc]?init];??
  • ??????
  • ????NSDictionary?*rootDic?=?[parser?objectWithString:jsonString?error:&error];??
  • ????NSDictionary?*weatherInfo?=?[rootDic?objectForKey:@"weatherinfo"];??
  • ????txtView.text?=?[NSString?stringWithFormat:@"今天是?%@??%@??%@??的天氣狀況是:%@??%@?",[weatherInfo?objectForKey:@"date_y"],[weatherInfo?objectForKey:@"week"],[weatherInfo?objectForKey:@"city"],?[weatherInfo?objectForKey:@"weather1"],?[weatherInfo?objectForKey:@"temp1"]];??
  • }??
  • (3)使用IOS5自帶解析類NSJSONSerialization方法解析:(無需導入包,IOS5支持,低版本IOS不支持)

    [cpp]?view plaincopy
  • -?(IBAction)btnPressIOS5Json:(id)sender?{??
  • ??????
  • ????NSError?*error;??
  • ????//加載一個NSURL對象??
  • ????NSURLRequest?*request?=?[NSURLRequest?requestWithURL:[NSURL?URLWithString:@"http://m.weather.com.cn/data/101180601.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"];??
  • ????txtView.text?=?[NSString?stringWithFormat:@"今天是?%@??%@??%@??的天氣狀況是:%@??%@?",[weatherInfo?objectForKey:@"date_y"],[weatherInfo?objectForKey:@"week"],[weatherInfo?objectForKey:@"city"],?[weatherInfo?objectForKey:@"weather1"],?[weatherInfo?objectForKey:@"temp1"]];??
  • ????NSLog(@"weatherInfo字典里面的內容為--》%@",?weatherDic?);??
  • }??
  • (4)使用JSONKit的解析方法:(需導入包:#import "JSONKit/JSONKit.h")

    [cpp]?view plaincopy
  • -?(IBAction)btnPressJsonKit:(id)sender?{??
  • ??????
  • ????//如果json是“單層”的,即value都是字符串、數字,可以使用objectFromJSONString??
  • ????NSString?*json1?=?@"{\"a\":123,?\"b\":\"abc\"}";??
  • ????NSLog(@"json1:%@",json1);??
  • ????NSDictionary?*data1?=?[json1?objectFromJSONString];??
  • ????NSLog(@"json1.a:%@",[data1?objectForKey:@"a"]);??
  • ????NSLog(@"json1.b:%@",[data1?objectForKey:@"b"]);??
  • ????[json1?release];??
  • ??????
  • ????//如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能會報錯(測試結果表明:使用由網絡或得到的php/json_encode生成的json時會報錯,但使用NSString定義的json字符串時,解析成功),最好使用objectFromJSONStringWithParseOptions:??
  • ????NSString?*json2?=?@"{\"a\":123,?\"b\":\"abc\",?\"c\":[456,?\"hello\"],?\"d\":{\"name\":\"張三\",?\"age\":\"32\"}}";??
  • ????NSLog(@"json2:%@",?json2);??
  • ????NSDictionary?*data2?=?[json2?objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];??
  • ????NSLog(@"json2.c:%@",?[data2?objectForKey:@"c"]);??
  • ????NSLog(@"json2.d:%@",?[data2?objectForKey:@"d"]);??
  • ????[json2?release];??
  • } ?
  • 部分內容轉載自:http://blog.csdn.net/enuola/article/details/7903632/

    總結

    以上是生活随笔為你收集整理的iOS中的JSON解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。