一、什么是json
JSON(JavaScript ObjectNotation) 是一种轻量级的数据交换格式。主要用于移动互联网下的数据交互,服务器端和移动客户端通过json进行数据交互。相对于xml来说,简单易用,传输速率高。Json中数组和对象的概念和oc中的NSArray/NSDictionary很像。Key/value相对于NSString/NSNumber。
{
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
二、解析方法
a) TouchJson
i. #import “TouchJson/JSON/CJSONDeserializer.h”
ii. NSDictionary * rootDic =[[CJSONDeserializer deserializer] deserialize:[jsonStringdataUsingEncoding:NSUTF8StringEncoding] error:&error];
b) JSONKit
i. #import “JSONKit/JSONKit.h”
ii. NSDictionary * rootDic =[jsonData objectFromJSONData];
c) SBJson
i. #import “SBJson/SBJson.h”
ii. SBJsonParser * parser = [[SBJsonParseralloc] init];
iii. NSDictionary * rootDic =[parser objectWithString:jsonString error:&error];
d) JSONSerialization
三、JSONSerialization
/**
* 把NSDictionary转换成JSON字符串
*/
- (NSString *)createJSONStringWithDictionary:(NSDictionary *)src {
if([NSJSONSerialization isValidJSONObject:src]) {
NSError * error;
NSData * data = [NSJSONSerialization dataWithJSONObject:src options:NSJSONWritingPrettyPrinted error:&error];
NSString * json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return json;
}
return nil;
}
/**
* 把NSArray转换成JSON字符串
*/
- (NSString *)createJSONStringWithArray:(NSArray *)src {
if([NSJSONSerialization isValidJSONObject:src]) {
NSError * error;
NSData * data = [NSJSONSerialization dataWithJSONObject:src options:NSJSONWritingPrettyPrinted error:&error];
NSString * json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return json;
}
return nil;
}
/**
* 把JSON字符串转换成NSDictionary
*/
- (NSDictionary *)parseJSONStringToDictionary:(NSString *)json {
NSError * error;
NSData * data = [json dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary * result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
return result;
}
/**
* 把JSON字符串转换成NSArray
*/
- (NSArray *)parseJSONStringToArray:(NSString *)json {
NSError * error;
NSData * data = [json dataUsingEncoding:NSUTF8StringEncoding];
NSArray * result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
return result;
}
四、参考
a) http://blog.csdn.net/xyz_lmn/article/details/8968187
b) http://blog.csdn.net/enuola/article/details/7903632/