首页 > Web开发 > 详细

JSon解析

时间:2015-12-16 19:05:20      阅读:142      评论:0      收藏:0      [点我收藏+]

1.使用JSONKit的解析方法:(需导入包:#import "JSONKit/JSONKit.h")   

- (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];
}




2.//使用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"]];
    
}
3.//使用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"]];
}


参照:http://www.cnblogs.com/jiangyuxuan/archive/2013/03/09/2950984.html



JSon解析

原文:http://www.cnblogs.com/yuyu-2012/p/5051739.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!