JSON
JSON简介
现在很多服务器返回的数据格式都是JSON格式的数据。
JSON数据传输格式
全称JavaScript Object Notation
是基于javascript
的轻量级的数据交换格式
JSON值类型
JSON中数据类型 对应 OC中数据类型
数字(整数或浮点数) NSNumber
字符串(在双引号中) " "
逻辑值(true 或 false) NSNumber
数组(在方括号中) NSArray
对象(字典 在花括号中) NSDictionary
null [NSNull null] 注意在判断值是否为空时使用此种方式
JSON语法
JSON 语法是JavaScript对象表示语法的子集。
键值对 键:值 :分开
数据由逗号分隔 ,
花括号表示对象(OC中的字典){}
方括号表示数组 []
简单的JSON例子
{"people" : [{"name":"张三", "age":"15"}, {"name":"李四", "age":"8"}, {"name":"王五", "age":"23"}, {"name":"小三", "age":"22"}]}
iOS中的JSON解析(OC)
NSJSONSerialization类
JSON转字典
注意一下代码中我的JSON数据是从文件中获取的,一般来说我们都是从服务器中获取的JSON数据,LLJsonModel是根据返回的数据自定义的一个Model类。
// JSON解析
// 从文件中得到JSON数据
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"json"];
// 读取json数据
NSData *jsonData = [NSData dataWithContentsOfFile:filePath];
// 查看得到的数据
NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"jsonStr==%@", jsonStr);
// NSJSONSerialization 解析
NSError *error = nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
if (!error) {
NSLog(@"dic====%@", dic);
// 取错误信息 判断一下
NSLog(@"error_msg==%@", dic[@"error_msg"]);
NSArray *modelArr = dic[@"people"];
for (NSDictionary *dic in modelArr)
{
LLJsonModel *album = [LLJsonModel new];
[album setValuesForKeysWithDictionary:dic];
[self.jsonArray addObject:album];
}
NSLog(@"jsonArray===%@", self.jsonArray);
// 展示到UI上
}
else
{
NSLog(@"error:%@", error);
}
字典转JSON
// 将对象转化为JSON数据,一般用来发送至服务端
// 判断是否可以转化为JSON数据
BOOL isValidJSON = [NSJSONSerialization isValidJSONObject:dic];
NSLog(@"isValidJSON==%d", isValidJSON);
// 将可以转化为json数据的对象转化为json数据
NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"string==%@", string);
解析注意事项
nil,Nil ,NSNull的区别:
NULL C语言中的 表示空指针
nil OC中的 空指针 一般用于对象的空
Nil OC中的 空指针 一般用于类的空
NSNull 空类 该类创建的对象为空对象 表示占位 对象中什么也没有
JSON解析网站
在线校验json格式
http://json.parser.online.fr
http://www.json.cn