一、数据结构({}为字典,[]为数组)

   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框架也可以实现解析,只不过一般系统提供就很好用啦,没必要扯淡的搞个第三方,不然就是装逼或脑子有病。