博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
json解包与json封包
阅读量:5097 次
发布时间:2019-06-13

本文共 2212 字,大约阅读时间需要 7 分钟。

首先,对两个名词进行简单的说明:

1.NSData

用来存储二进制的数据类型。NSData类提供了一种简单的方式,它用来设置缓冲区、将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件。不变缓冲区(NSData类),也可定义可变的缓冲区(NSMutableData类)。

2.json

作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式。

小结:我们只需要明白NSData类型是用来存储二进制数据的,json是一种数据格式,注意是格式。

接着,先用一段文字简单描述一下json解包和json封包:

iOS5.0以后,苹果SDK推出了自带的json解决方案NSJSONSerialization,这是一个非常好用的json生成和解析工具,效率也是比其他第三方开源项目的高很多。NSJSONSerialization提供了json数据封包、Json数据解包。NSJSONSerialization提供了将json数据转换为NSDictionary或NSArray的解包方法,也提供了将NSDictionary、NSArray对象转换为json数据(可以通过调用isValidJSONObject来判断NSDictionary、NSArray对象是否可以转换为json数据)的封包方法。

然后,用一张图试着说明两件事。其一是,利用NSJSONSerialization将一个json文件解包成数组或者字典。其二是,利用NSJSONSerialization将数组或者字典封包成一个json文件。

 

最后还是上代码与效果图:

1 - (void)viewDidLoad { 2     [super viewDidLoad]; 3      4     NSLog(@"*******开始封包********"); 5     [self fengbao]; 6     NSLog(@"*******开始解包********"); 7     [self jiebao]; 8 } 9 10 - (void)jiebao11 {12     NSString *filePath = @"/Users/Hers/Desktop/UIimageView简单测试/UIimageView简单测试/jsonDate.json";13     NSData *jsonData = [NSData dataWithContentsOfFile:filePath];14     NSError *error;15     NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error:&error];16     NSLog(@"%@",jsonDict);17 }18 19 - (void)fengbao20 {21     NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];22     // isValidJSONObject判断对象是否可以构建成json对象23     if ([NSJSONSerialization isValidJSONObject:dic]){24         NSError *error;25         // 创造一个json从Data, NSJSONWritingPrettyPrinted指定的JSON数据产的空白,使输出更具可读性。26         NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];27         NSLog(@"jsonData:%@",jsonData);28         29         NSString *jsonStr =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];30         NSLog(@"jsonStr:%@",jsonStr);31         32         BOOL result = [jsonData writeToFile:@"/Users/Hers/Desktop/UIimageView简单测试/UIimageView简单测试/jsonDate.json" atomically:YES];33         NSLog(@"result:%d",result);34     }35 }

输出日志:

封包操作后产生的文件:

 

【极力推荐】2018年中秋节两天的良心写作,全面讲解UITextField,总有你不知道的知识:

转载于:https://www.cnblogs.com/cchHers/p/5357583.html

你可能感兴趣的文章
2015多校1006.First One
查看>>
Sql2005中还原Sql2000的备份文件
查看>>
收藏一个小程序及其后台
查看>>
Bat学习
查看>>
jQuery很好的插件jQuery Pagination Plugin
查看>>
java nio
查看>>
单个日期
查看>>
图片圆角并居中显示解决方案
查看>>
别当鸟人——《软件人才管理的艺术》书评
查看>>
C++历史及优点
查看>>
JMeter数据库测试计划
查看>>
SVN diff
查看>>
网络协议栈14:Connect函数分解之网卡发送/接收数据流程
查看>>
allocwithzone
查看>>
编写程序,将来自文件中的行保存在一个vector<string>,然后使用一个istringstream 从vector中读取数据,每次读一个单词...
查看>>
virtual memory(4)
查看>>
TCP Data Flow and Window Management(4)
查看>>
Android Canvas方法总结
查看>>
UML简介
查看>>
测试用例设计方法之错误推测法
查看>>