zoukankan      html  css  js  c++  java
  • IOS 5 解析Json

    作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式

    从ios5开始,apple提供了对json的原生支持,但为了兼容以前的ios版本,我们仍然需要使用第三方库来解析

    常用的ios json库有json-frameworkJSONKitTouchJSON等,这里说的是JSONKit

    JSONKit的使用相当简单,从github.com下载下来,添加到ios项目中,让好在要使用json的地方“#import “JSONKit.h””,json相关的方法,就会自动添加到NSString、NSData下,

    常用的方法,有下面几个:

        - (id)objectFromJSONString;
        - (id)objectFromJSONStringWithParseOptions:(JKParseOptionFlags)parseOptionFlags;
        - (id)objectFromJSONData;
        - (id)objectFromJSONDataWithParseOptions:(JKParseOptionFlags)parseOptionFlags;
    

     如果json是“单层”的,即value都是字符串、数字,可以使用objectFromJSONString:

        NSString *json = @"{\"a\":123, \"b\":\"abc\"}";
        NSDictionary *data = [json objectFromJSONString];
        NSLog(@"json.a:%@", [data objectForKey:@"a"]);
        NSLog(@"json.b:%@", [data objectForKey:@"b"]);
        [json release];
    

     如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能会报错(我的测试结果:使用由网络得到的php/json_encode生成的json时报错,但使用NSString定义的json字符串时,解析成功),最好使用objectFromJSONStringWithParseOptions

        NSString *json = @"{\"a\":123, \"b\":\"abc\", \"c\":[134, \"hello\"], 
            \"d\":{\"name\":\"张三\",\"age\":23}}";
        NSLog(@"json:%@", json);
        NSDictionary *data = [json objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];
        NSLog(@"json.c:%@", [data objectForKey:@"c"]);
        NSLog(@"json.d:%@", [[data objectForKey:@"d"]objectForKey:@"name"]);
        [json release];
    

    结果:
    2012-07-09 18:48:07.255 Ate-Goods[17113:207] json.c:(
    134,
    hello
    )
    2012-07-09 18:48:07.256 Ate-Goods[17113:207] json.d:张三

    从上面的写法可以看出,json与objece-c的数据对应关系如下:
    Number -> NSNumber
    String -> NSString
    Array -> NSArray
    Object -> NSDictionary
    另外:
    null -> NNSNull
    true and false -> NNSNumber

    来源:http://www.jiangkunlun.com/2012/07/ios_json/

  • 相关阅读:
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    团队作业—个人记录
    4.21
    4.20
    4.19
    4.18
  • 原文地址:https://www.cnblogs.com/comsokey/p/IOS5Json.html
Copyright © 2011-2022 走看看