ios 解析json

本文介绍如何使用JSONKit库解析JSON数据。重点讲解了JSONKit的基本用法,包括不同类型的JSON数据解析方法及其应用场景,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

下载地址:https://github.com/johnezang/JSONKit

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

    - (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

关于JKParseOptionFlags参数的可选项,请参照github的文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值