zoukankan      html  css  js  c++  java
  • JSon解析

    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



  • 相关阅读:
    Docker网络简介
    Dockerfile数据管理
    Dockerfile指令详解下
    Dockerfile指令详解上
    设计模式之装饰器模式
    设计模式之适配器模式
    Java NIO的工作方式
    使用Dockerfile定制镜像
    jquery+asp.net 调用百度geocoder手机浏览器定位--Api介绍及Html定位方法
    js 取父级 页面上的元素
  • 原文地址:https://www.cnblogs.com/yuyu-2012/p/5051739.html
Copyright © 2011-2022 走看看