一、数据结构({}为字典,[]为数组)
JSON⽂档有两种结构:对象、数据
对象:以“{”开始,以“}”结束,是“名称/值”对⼉的集合。名称和值中 间⽤“:”隔开。多个“名称/值”对之间⽤“ , ”隔开。类似OC中的字典。
数组:以“[”开始,以“]”结束,中间是数据。数据以“ , ”分隔。
JSON中的数据类型:字符串、数值、BOOL、对象、数组。
如:
[{"name":"张三",
"sex":"男",
"age":"18"
},
"name":"王二麻子",
"sex":"男",
"age":"30"
},
{
"name":"盛辰",
"sex":"小妖精",
"age":"38"
}
]
二、解析步骤
,一般情况下,服务器返回什么类型数据,我们就用什么类型的数据接收
(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)从文件路径直接解析
NSStringNSStringstringWithContentsOfFile:filePath encoding:NSUTF8StringEncodingerror:nil ];
NSArrayobjectFromJSONString];
,NSJSONSerialization的参数含义:
,数据对应的二进制流
, options
是否生成可变数组
是否生成可变的叶子
是否允许最外层不是字典或数组
,errors 解析过程出现的错误
三、当然还有第三方的JSONKit框架也可以实现解析,只不过一般系统提供就很好用啦,没必要扯淡的搞个第三方,不然就是装逼或脑子有病。