json解析
来源:互联网 发布:优化旅客列车编组 编辑:程序博客网 时间:2024/06/05 10:37
作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式
从ios5开始,apple提供了对json的原生支持,但为了兼容以前的ios版本,我们仍然需要使用第三方库来解析
常用的ios json库有json-framework、JSONKit、TouchJSON等,这里说的是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
- 【JSON解析】JSON解析
- 解析JSON
- Json解析
- JSON解析
- JSON解析
- json解析
- Json解析
- Json解析
- JSON解析
- Json解析
- Json解析
- JSON解析
- JSON解析
- json 解析
- Json解析
- JSON解析
- json解析
- json 解析
- Ubuntu下彻底卸载重装mysql
- PageRank算法C++代码实现标准版
- 完全卸载oracle11g步骤
- Android ANR异常及解决方法
- Hibernate读书笔记之CRUD
- json解析
- java将String字符串写入文件
- 【设计分享】Altera FPGA及Quartues应用小实例
- magento - 获取购物车中的总额,运费,tax ,count,grandtotal等
- 修改DNS缓存TTL生存时间的生效期
- C - Pashmak and Buses
- 关于JFormattedTextField清空数据的方法
- 对数据结构中栈的一些理解
- linux powerpc i2c驱动 之 i2c设备层的注册过程