-------------------JSONData-->OC对象(字典|数组) [反序列化处理]-------------------
//JSONData - >OC中的对象(字典|数组) [反序列化处理]
-(void)jsonToOC
{
[[[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/video?type=JSON"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//处理服务器返回的数据
//01 JSONData - > NSString
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
//02 JSONData - >OC中的对象(字典|数组)
/* 参数说明
*
* 第一个参数:要解析的json数据
* 第二个参数:解析数据时候附加的选项 默认传0
* NSJSONReadingMutableContainers = (1UL << 0), 得到的对象是可变的
* NSJSONReadingMutableLeaves = (1UL << 1), 得到的对象中字符串是可变的
* NSJSONReadingAllowFragments = (1UL << 2) ! 当返回的对象既不是字典也不是数组的时候(null)
* 第三个参数:错误信息
*/
NSDictionary * obj = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"%@--%@",[obj class],obj);
/*
[NSNull null]; //空对象
nil //空
//NSNull *null = [NSNull null];
//NSDictionary *dict = @{@"name":@"xiaoma",@"age":[NSNull null]};
*/
}] resume];
}
JSONData-->OC对象
---------------------OC中的对象(字典|数组) - >JSONData[序列化处理]--------------------
//OC中的对象(字典|数组) - >JSONData[序列化处理]
-(void)ocToJSON
{
//注意:并不是所有的OC对象都支持转换为JSON
//NSDictionary *dict = @{@"name":@"xiaoming",@"age":@25};
//NSArray *array = @[@"wen",@"xioamage",@"dangdang"];
NSString *string = @"我恨你!";
/*
- 最外层的对象必须是 an NSArray or NSDictionary
- 字典或数组中所有的元素只能是NSString, NSNumber, NSArray, NSDictionary, or NSNull
- 字典中所有的key都必须是 NSStrings
- NSNumbers 是标准的并且不能是无穷大
*/
if (![NSJSONSerialization isValidJSONObject:string]) {
NSLog(@"该对象不支持转换");
return;
}
/* 参数说明
*
* 第一个参数:要序列化的OC对象
* 第二个参数:选项
*/
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:string options:kNilOptions error:nil];
NSLog(@"%@",[[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]);
}
//把数据以json的方式来保存
-(void)other
{
//01 加载数据
NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"apps.plist" ofType:nil]];
//02 把数据以json的方式来保存
//写plist文件
//[array writeToFile:@"/Users/xiaomage/Desktop/123.plist" atomically:YES];
//写json文件 错误的写法
//[array writeToFile:@"/Users/xiaomage/Desktop/123.json" atomically:YES];
//需要先把OC对象转换成jsonData 然后再写文件
//NSJSONWritingPrettyPrinted 排版美化结构
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:nil];
//03 写文件
[jsonData writeToFile:@"/Users/123wex/Desktop/123.json" atomically:YES];
}
//加载json数据
-(void)other2
{
//01 加载数据
NSData *jsonData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"123.json" ofType:nil]];
//02 jsonData - >OC对象
NSArray *array = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
//03 打印输出
NSLog(@"%@",array);
}
网友评论