标签:
一、数据结构({}为字典,[]为数组)
JSON?档有两种结构:对象、数据
对象:以“{”开始,以“}”结束,是“名称/值”对?的集合。名称和值中 间?“:”隔开。多个“名称/值”对之间?“ , ”隔开。类似OC中的字典。
数组:以“[”开始,以“]”结束,中间是数据。数据以“ , ”分隔。
JSON中的数据类型:字符串、数值、BOOL、对象、数组。
如:
[{"name":"张三",
"sex":"男",
"age":"18"
},
{"name":"王二麻子",
"sex":"男",
"age":"30"
},
{
"name":"盛辰",
"sex":"小妖精",
"age":"38"
}
]
二、解析步骤
1,一般情况下,服务器返回什么类型数据,我们就用什么类型的数据接收
(1)从文件路径转化成二机制流再解析
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:fileType];
获取二进制流
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSArray *object = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves) error:nil];
或者直接 NSArray *object = [data objectFromJSONData];
(2)从文件路径直接解析
NSString *str = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil ];
NSArray *arr = [str objectFromJSONString];
2,NSJSONSerialization的参数含义:
1), Data 数据对应的二进制流
2), options
NSJSONReadingMutableContainers 是否生成可变数组
NSJSONReadingMutableLeaves 是否生成可变的叶子
NSJSONReadingAllowFragments 是否允许最外层不是字典或数组
3),errors 解析过程出现的错误
三、当然还有第三方的JSONKit框架也可以实现解析,只不过一般系统提供就很好用啦,没必要扯淡的搞个第三方,不然就是装逼或脑子有病。
标签:
原文地址:http://www.cnblogs.com/qiushifalife/p/4802702.html