cocoa 下json开源的类库有很多,其中JSONKit库是非常简单易用而且效率又比较高的。
见图:
如果你的app只支持iOS 5.0以上系统,那么直接用苹果官方提供的JSON库:NSJSONSerialization库即可。如果你的app要支持iOS 5.0以下的系统,那么我个人推荐JSONKit,不过JSONKit本身做了很多内存上的优化,所以不支持ARC,你在使用时可以对其加上 -fno-objc-arc 的编译标志即可
- 编译的时候需要指定JSONKit.m的compiler flags "-fno-objc-arc"
想要使用JSONKit库来解析json文件,只需要下载JSONKit.h 和JSONKit.m添加到工程中(下载链接);然后加入libz.dylib即可
解析代码举例:
ios开发中JSONKit的使用
- NSLog(@"打印测试");
- NSString *jsonstring =@"[{\"age\":18,\"book\":{\"price\":23.2,\"title\":\"boook111\"},\"name\":\"samyou\"},{\"age\":22,\"book\":{\"price\":33,\"title\":\"booook222\"},\"name\":\"samsam\"}]";
- NSData *data=[jsonstring dataUsingEncoding:NSUTF8StringEncoding];
- NSArray *arr=(NSArray *)[data mutableObjectFromJSONData];
- NSLog(@"count=%d",arr.count);
- for(int i=0;i<arr.count;i++)
- {
- NSDictionary *people=[arr objectAtIndex:i];
- NSString *name=[people objectForKey:@"name"];
- NSString *age=[people objectForKey:@"age"];
- NSLog(@"person withname=%@,age=%d",name,[age intValue]);
- NSDictionary *book=[people objectForKey:@"book"];
- NSString *bookname=[book objectForKey:@"title"];
- NSNumber *price=[book objectForKey:@"price"];
- NSLog(@"book with title=%@,price=%f",bookname,[price doubleValue]);
- }
- //比如 strJson 是网络上接收到的 json 字符串,
- #import "JSONKit.h"
- NSString *strJson = @"{\"aps\": {\"alert\":{\"body\":\"a msg come!\"},\"bage\":3,\"sound\":\"def.mp3\"}}";
- NSDictionary *result = [jsonData objectFromJSONData];
- NSMutableDictionary *jsonDic = [NSMutableDictionary dictionary];
- NSMutableDictionary *alert = [NSMutableDictionary dictionary];
- NSMutableDictionary *aps = [NSMutableDictionary dictionary];
- [alert setObject:@"a msg come!" forKey:@"body"];
- [aps setObject:alert forKey:@"alert"];
- [aps setObject:@"3" forKey:@"bage" ];
- [aps setObject:@"def.mp3" forKey:@"sound"];
- [jsonDic setObject:aps forKey:@"aps"];
- NSString *strJson = [jsonDic JSONString];
用法:
1.dictionary------>json
NSString *jsonstring = [dictionary JSONString];
2.json------------>dictionary
NSDictionary *dictionary = [jsonstring objectFromJSONString];