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文件。

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

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3
 4     NSLog(@"*******开始封包********");
 5     [self fengbao];
 6     NSLog(@"*******开始解包********");
 7     [self jiebao];
 8 }
 9
10 - (void)jiebao
11 {
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)fengbao
20 {
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 }

输出日志:

封包操作后产生的文件:

时间: 2024-10-06 12:44:21

json解包与json封包的相关文章

一行代码解析复杂JSON文件:利用Android自带的包解析JSON

上周写了一篇关于Android自带的org.JSON与JSONLIB相冲突的文章,今天我想写一下我对org.json使用的小心得 由于学校项目要求解析一个复杂JSON,所以就上网搜了一下,不过Google一搜JSON数据解析,会出现五花八门的结果,JSONLIB, GSON, FASTJSON等等,唯独没有对org.json的使用,其实Android自带的JSON解析包相当好用,其用法与JSONLIB类似,我是先用的JSONLIB,在JRE环境下用得好好的,到了Android下怎么都跑不通(原来

Java构造和解析Json数据的两种方法详解二——org.json

转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法示例.       用json-lib构造和解析Json数据的方法详解请参见我上一篇博文:Java构造和解析Json数据的两种方法详解一 一.介

CoAP学习笔记——nodeJS node-coap返回JSON数据包

0 前言 本文说明如何使用node-coap返回JSON数据包.CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性.node-coap使用nodejs实现了coap的客户端和服务器端. [测试环境]--ubuntu/Linux [相关博文] [CoAP协议文档--The Constrained Application Protocol (CoAP)] [CoAP协议学习--CoAP基础] [CoAP学习

使用Python Yaml包处理Json数据

在做网络爬虫的时候会遇到json数据格式的数据包,如果返回的是一个json格式的文件,可以使用 Python Yaml包处理数据,不需要再使用正则表达式匹配了,使用实例如 https://maps-api-ssl.google.com/maps/suggest?q=hello  这个地址,我们需要query对应的数据项. 相关代码如下: # -*- coding: utf-8 -*- import yaml import urllib2 address = 'https://maps-api-s

前端学习——使用Ajax方式POST JSON数据包

0.前言 本文解释如何使用Jquery中的ajax方法传递JSON数据包,传递的方法使用POST(当然PUT又有时也是一个不错的选择).POST JSON数据包相比标准的POST格式可读性更好些,层次结构也更清晰. 为了说明问题,前端和后端较为简单,重点突出AJAX的应用. [前端]--add-post-json.html 图1 add页面 [后端]--add-post-json.php <?php // 返回JSON格式 header('Content-Type:application/jso

2016.07.09-10解包、封包

解包.封包 解包:把可迭代队形的元素赋值给变量 封包:是把变量构建成元组 x, y =(1, 3) x, y =[1, 3] #*mid 表示一个容器,可以包含任意多个元素,解包过程中只能有一个*,*赋值出来的都是列表 >>> head, *tail = list(range(10)) >>> head 0 >>> tail [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> head, *mid ,tail = list

c# 生成json数据包

json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", "url":"http://weixin.qq.com/download", "topcolor"

websocket通信之握手,封包,解包

介绍 WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex)通信.其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信. 上古时期的浏览器有些是不支持WebSocket的,下面来介绍如何在浏览器中创建一个websocket对象 var socket = new WebSocket("ws://127.0.0.1:8002/xxoo&quo

python高级特性之封包与解包

前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:kwsy PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 1. python 封包 将多个值赋值给一个变量时,python会自动将这些值封装成元组,这个特性称之为封包 当函数返回多个数值时,也会进行封包 实践中,很少主动使用封包操作 2. python解包 python解包是使用频率非常高的技术,下面列列举