json解包与json封包
首先,对两个名词进行简单的说明:
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文件。
最后还是上代码与效果图:
- (void)viewDidLoad {
[super viewDidLoad]; NSLog(@"*******开始封包********");
[self fengbao];
NSLog(@"*******开始解包********");
[self jiebao];
} - (void)jiebao
{
NSString *filePath = @"/Users/Hers/Desktop/UIimageView简单测试/UIimageView简单测试/jsonDate.json";
NSData *jsonData = [NSData dataWithContentsOfFile:filePath];
NSError *error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error:&error];
NSLog(@"%@",jsonDict);
} - (void)fengbao
{
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];
// isValidJSONObject判断对象是否可以构建成json对象
if ([NSJSONSerialization isValidJSONObject:dic]){
NSError *error;
// 创造一个json从Data, NSJSONWritingPrettyPrinted指定的JSON数据产的空白,使输出更具可读性。
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
NSLog(@"jsonData:%@",jsonData); NSString *jsonStr =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"jsonStr:%@",jsonStr); BOOL result = [jsonData writeToFile:@"/Users/Hers/Desktop/UIimageView简单测试/UIimageView简单测试/jsonDate.json" atomically:YES];
NSLog(@"result:%d",result);
}
}
输出日志:
封包操作后产生的文件:
【极力推荐】2018年中秋节两天的良心写作,全面讲解UITextField,总有你不知道的知识:UITextField的使用、介绍、讲解、全解、简介、说明
json解包与json封包的更多相关文章
- BeanShell使用json.jar包处理Json数据
环境准备 ①Jmeter版本 ,JDK ②前置条件:将json.jar包置于..\lib\下, 如果还是报错,可以将该jar包添加到测试计划的Library中:否则会报:Typed variable ...
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain; public clas ...
- Java构造和解析Json数据的两种方法详解二——org.json
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...
- json深度详解及org.json库
了解json (Javascript Object Notation) 网站:http://json.org/ english JSON (JavaScript Object Notation) i ...
- c# 生成json数据包
json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...
- Java中net.sf.json包关于JSON与对象互转的问题
在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...
- 用jackson包实现json、对象、Map之间的转换
jackson API的使用 用jackson包实现json.对象.Map之间的转换
- Java中net.sf.json包关于JSON与对象互转的坑
在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...
- 使用Ajax方式POST JSON数据包(转)
add by zhj: 用ajax发送json数据时注意两点, 第一,使用JSON.stringify()函数将data转为json格式的字符串,如下 data: JSON.stringify({ ...
随机推荐
- groovy hello world
安装方法见官方文档http://groovy.codehaus.org/Installing+Groovy 用新一个文件HelloWorld.groovy,以utf8的编码保存,内容为: printl ...
- 利用jink调试程序,时间不准的解决办法
前几天,做工程,遇到了利用jlink的SWD的模式调试程序,定时器延时不准的问题,上网搜了好多,终于找到了问题所在,感谢万能的网友.时间不对是因为Keil的设置问题. 以下是转自网友: 一.先说说仿真 ...
- 存储可靠性技术之 --RAID
云计算项目交付时,不可避免的需要考虑存储磁盘采用何种RAID.例如:我们的项目工程师可能会建议大家连接克隆虚拟机系统盘组RAID 10,完整复制虚拟机数据盘 使用RAID5或者RAID6等,那么RAI ...
- Java8中 Parallel Streams 的陷阱 [译]
译注:文本有所精简和意译 原文链接 : Java Parallel Streams Are Bad for Your Health!原作者:OLEG SHELAJEV 翻译:Hason 转载请保留相关 ...
- JS入门(三)
数据的类型转换: 之前提到过,js中数据类型分两种, 基本数据类型string number boolean undefined null 复杂数据类型 对象 Date Array ...
- 2208: [Jsoi2010]连通数
2208: [Jsoi2010]连通数 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1371 Solved: 557[Submit][Status ...
- 利用cropper插件裁剪本地图片,然后将裁剪过后的base64图片上传至七牛云空间
现在做的项目需要做一些图片处理,由于时间赶急,之前我便没有处理图片,直接将图片放在input[type=file]里面,以文件的形式提交给后台,这样做简直就是最低级的做法,之后各种问题便出来了,人物头 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 16.OPC Server的使用步骤。附:3.3 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- SQL注入相关的知识【Mysql为例子】
以DVWA的sql注入初级为例,结合网上搜索的相关利用方式,总结成这一篇文章,内容会有点跳跃. 大纲: 1.初级手工注入 2.order by的使用 3.union查询注意点 4.Mysql相关的注释 ...
- 用js写倒计时,向列表添加数据-------2017-03-21
一.单选按钮确定提交是否可用 <input id="a" type="radio" name="a" onclick="c ...