iOS——JSON

概念: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解析出来的数据
iOS——JSON_第1张图片

2、这种类型的,要用字典去接收JSON解析出来的数据,然后利用字典的key值去取对应的value,依次类推,一直找到你想要的数据,例如:我要得到“data”里的“cityName”
iOS——JSON_第2张图片
iOS——JSON_第3张图片
iOS——JSON_第4张图片

//先得到"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)
iOS——JSON_第5张图片
3、在对应的文件,加上—— -fon-objc-arc
这里写图片描述
4、使用
这两个方法是等价的

 //通过JSonKit去解析
NSArray *dataArray = [data objectFromJSONData];
//通过系统Foundation框架去解析,得到的是一个数组
NSArray *dataArray = [NSJSONSerialization
JSONObjectWithData:data options:0 error:nil];

总结:JSON是目前流行的数据类型,通过网络请求得到的数据大多数都是JSON数据,要通过解析数据,让数据显示在UI上。因此JSON数据的解析是重要的,要掌握。

你可能感兴趣的:(iOS)