在作項目的時候免不了要解析網絡數據,XML 和 JSon 格式html
這篇文章探討解析JSon數據:ios
JSon解析庫:
git
一、NSJSONSerialization (蘋果 PAI)github
二、JSONKit json
三、NextiveJson網絡
四、YAJLapp
五、SBJSON (json-framework)spa
六、TouchJSONcode
速度比較:htm
大部分人用SBJSon,可是五、6的速度最慢, 一、2的速度最快。
使用詳解:
一、NSJSONSerialization
解析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]; }
二、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];
五、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];