概念:JSON是一种轻量级的数据交换格式。JSON采用完全独立语言的文本格式,易于阅读和编写,同时也易于机器解析和生成。
一、JSON的使用
//创建数组接收数据
NSMutableArray *personArray = [NSMutableArray
array];
//文件路径
NSString *path = [[NSBundle mainBundle]
pathForResource:@"Person" ofType:@"txt"];
//创建数据对象
NSData *data = [NSData
dataWithContentsOfFile:path];
//通过系统Foundation框架去解析,得到的是一个数组
NSArray *dataArray = [NSJSONSerialization
JSONObjectWithData:data options:0 error:nil];
//通过循环数组,拿到一个dict,并把dict赋给per的属性
for (NSDictionary *dict in dataArray) {
//Person是一个Model,接收数据
Person *per = [Person new];
[per setValuesForKeysWithDictionary:dict];
[personArray addObject:per];
}
二、取数据
1、这种类型的,要用数组去接收JSON解析出来的数据
2、这种类型的,要用字典去接收JSON解析出来的数据,然后利用字典的key值去取对应的value,依次类推,一直找到你想要的数据,例如:我要得到“data”里的“cityName”
//先得到"result"里的数据,类型是字典
NSDictionary *dic1 = [dic objectForKey:@"result"];
//在得到"data"里的数据,类型是数组
NSArray *arr = [dic1 objectForKey:@"data"];
//然后遍历这个arr数组,得到所需的数据
for (NSDictionary *dict in arr) {
//用model接收数据
cinemaModel *model = [cinemaModel new];
[model setValuesForKeysWithDictionary:dict];
[dataArray addObject:model];
}
三、使用第三方库——JSONKit
因为是第三方库,所有会出现ARC的问题,以下是解决的方法
1、导入文件
2、找到Compile Sources(9 items)
3、在对应的文件,加上—— -fon-objc-arc
4、使用
这两个方法是等价的
//通过JSonKit去解析
NSArray *dataArray = [data objectFromJSONData];
//通过系统Foundation框架去解析,得到的是一个数组
NSArray *dataArray = [NSJSONSerialization
JSONObjectWithData:data options:0 error:nil];