iOS开发指南-JSON篇

时间:2022-03-27 13:26:08

相关文章:《iOS开发指南-XML篇》

一.JSON文档结构

1. 关于JSON

(1)JSON是什么?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.

(2)JSONXML比较

XML相比,描述相同数据JSON所需的字符个数要少,所以传输速度就会更高,流量更少.

(3)JSON更适合iOS移动开发

  • 由于Web和移动平台开发的要求是流量尽可能少,速度尽可能快,而轻量级的JSON相对于其他数据交换格式更符合要求.
  • 构成JSON的两种结构,为字典和数组.刚好可以用NSDictionaryNSArray去接收数据,使用更方便.

2.JSON示例

最近在研究黄金,所以刚好,以聚合数据所提供的免费黄金数据数据接口作为示例,请求一个JSON格式的数据.

使用前注册好账号,并进行了实名验证,然后申请黄金数据API资格,会获取一个AppKey

iOS开发指南-JSON篇

我们参照请求示例使用Postman工具发送Get请求
iOS开发指南-JSON篇

获得的JSON数据如下,为字典结构的JSON(作为讲解,3以后的相同格式的数据以…代替)

{
"resultcode": "200",
"reason": "SUCCESSED!",
"result": [
{
"1": {
"variety": "Au100g",
"latestpri": "286.02",
"openpri": "288.00",
"maxpri": "289.00",
"minpri": "286.02",
"limit": "-0.38%",
"yespri": "287.12",
"totalvol": "440.00",
"time": "2016-07-20 15:27:54"
},
"2": {
"variety": "Au(T+N1)",
"latestpri": "288.50",
"openpri": "288.65",
"maxpri": "290.50",
"minpri": "287.05",
"limit": "-0.47%",
"yespri": "289.85",
"totalvol": "80304.00",
"time": "2016-07-20 15:29:55"
},
"3": {
"variety": "Au(T+D)",
"latestpri": "285.71",
"openpri": "287.44",
"maxpri": "287.70",
"minpri": "285.31",
"limit": "-0.38%",
"yespri": "286.79",
"totalvol": "64330.00",
"time": "2016-07-20 15:30:00"
},
...
}
],
"error_code": 0
}

3.JSON结构讲解

二.JSON文件解析

(1)解析步骤

①首先调用NSString的

//将文件读取成字符串
+ (nullable instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;

②然后调用NSString的

//将字符串转成二进制数据NSData
- (nullable NSData *)dataUsingEncoding:(NSStringEncoding)encoding;

③最后调用系统类NSJSONSerialization的

//进行解析,解析成NSArrayNADictioanry
+ (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

(2)程序举例

NSString *pathDesktop = @"/Users/mac/Desktop";
//1.读取json文件中的信息
NSString *string = [NSString stringWithContentsOfFile:[pathDesktop stringByAppendingString:@"/json/jsonUserList.txt"] encoding:NSUTF8StringEncoding error:nil];

//2.将string转换成data
NSData *dataFromString = [string dataUsingEncoding:NSUTF8StringEncoding];

//3.json解析
NSDictionary *dictionaryFromFile = [NSJSONSerialization JSONObjectWithData:dataFromString options:NSJSONReadingMutableContainers error:nil];