JSON解析
什么是JSON?
- 1.JSON是一种轻量级的数据格式,一般用于数据交互
- 2.服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)
JSON数据转换为OC对象(反序列化处理)
-(void)JsonToOc{
//获取请求路径
NSURL *url=[NSURL URLWithString:@"http://120.25.226.186:32812/login?username=wujian&pwd=wujian&type=JSON"];
//创建请求对象
NSURLRequest *request=[NSURLRequest requestWithURL:url];
//创建会话对象
NSURLSession *session=[NSURLSession sharedSession];
//根据会话对象创建请求任务
NSURLSessionDataTask *dataTask=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
/*第二个参数:
NSJSONReadingMutableContainers = (1UL << 0), 1x2的0次方 生成是字典和数组是可变的
NSJSONReadingMutableLeaves = (1UL << 1), 字典中的(key)字符串也是可变的
NSJSONReadingAllowFragments = (1UL << 2) 最外层既不是字典也不是数组
*/
id obj= [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"%@",[obj class]);
}];
//提交请求
[dataTask resume];
}
OC对象转换为JSON数据(序列化处理)
-(void)OcToJson{
//创建一个字典
NSDictionary *dict=@{
@"age":@"13"
};
NSString *str=@"字符串";
//先判断一下自己创建的数据类型能不能转换成JSON数据
//转换成JSON数据的前提是:
//1.最外层必须是 NSArray or NSDictionary
//2.所有的对象必须是 NSString, NSNumber, NSArray, NSDictionary, or NSNull中的一种
//3.字典的key都必须是 NSStrings
if ([NSJSONSerialization isValidJSONObject:str]) {
/*
第一个参数:要转换的OC对象
第二个参数:选项 NSJSONWritingPrettyPrinted 排版
第三个参数:错误
*/
//将制定的Oc对象转换为JSON数据
NSData *data =[NSJSONSerialization dataWithJSONObject:str options:kNilOptions error:nil];
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
}else{
NSLog(@"您创建的数据类型不支持转换成JSON数据");
}
}
plist文件转换为JSON数据
-(void)plistToJson{
//获取plist的路径
NSString *path=[[NSBundle mainBundle]pathForResource:@"apps.plist" ofType:nil];
// 获得plist文件中保存的内容
NSArray *array=[NSArray arrayWithContentsOfFile:path];
// 将plist中的数据转换为JSON数据
NSData *data=[NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:nil];
//显示JSON数据
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
//将JSON数据写到桌面
[data writeToFile:@"/Users/saishibun/Desktop/test.json" atomically:YES];
}