IOS開發之——四種方法解析Jason資料

來源:互聯網
上載者:User

 

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

//使用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)
//使用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不支援)
- (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)

 

- (void)btnPressJsonKit:(id)sender {        //如果json是“單層”的,即value都是字串、數字,可以使用objectFromJSONString    NSString *json1 = @{a:123, :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, :abc, c:[456, hello], d:{ame:張三, age:}};    NSLog(@json2:%@, json2);    NSDictionary *data2 = [json2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];    NSLog(@json2.c:%@, [data2 objectForKey:@c]);    NSLog(@json2.d:%@, [data2 objectForKey:@d]);    [json2 release];}



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.