在做项目的时候免不了要解析网络数据,XML 和 JSon 格式
这篇文章探讨解析JSon数据:
JSon解析库:
1、NSJSONSerialization (苹果 PAI)
2、JSONKit
3、NextiveJson
4、YAJL
5、SBJSON (json-framework)
6、TouchJSON
速度比较:
大部分人用SBJSon,但是5、6的速度最慢, 1、2的速度最快。
使用详解:
1、NSJSONSerialization
https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSJSONSerialization_Class/index.html
解析json数据为 NSDictionary、NSArray :
NSData *data = dataes;//网络解析到dataes NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; //再从字典中获取各种数据
封装 NSDictionary 、 NSArray 为json数据:
NSDictionary *dic; if ([NSJSONSerialization isValidJSONObject:dic]){ //isValidJSONObject 判断对象是否可以构建成json对象 NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error]; //NSJSONWritingPrettyPrinted 把json数据格式化,否则会在一行中显示。更有可读性。 NSString *json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; }
2、JSONKit
https://github.com/johnezang/JSONKit
#import "JSONKit.h" (没有使用ARC 添加 -fno-objc-arc)
解析json数据为 NSDictionary、NSArray :
NSData *data = dataes;//网络解析到dataes NSDictionary *dic = [data objectFromJSONData];
封装 NSDictionary 、 NSArray 为json数据:
NSDictionary *dic; NSString *strJson = [dic JSONString];
5、SBJSON
http://stig.github.com/json-framework/
解析json数据为 NSDictionary、NSArray :
NSDictionary *dic; SBJsonWriter *json = [[SBJsonWriter alloc] init]; NSString *str = [json stringWithObject:dic];
封装 NSDictionary 、 NSArray 为json数据:
NSData *datas; NSString * str = [[NSString alloc] initWithData: datas encoding:NSUTF8StringEncoding]; NSDictionary *dic = [[[SBJsonParser alloc] init] objectWithString:str];