iOS 中 JSON 数据交换格式
JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。
JSON 的详细教程,能够參见 JSON 中国:http://www.json.org.cn/index.htm ,当然还有
JSON 在线校验格式化工具:http://www.bejson.com/ ,希望深入学习 JSON 能够參考其它教程。JSON 的轻量级是相对于 XML 文档结构而言的,描写叙述项目字符少。所以描写叙述同样的数据所需的字符个数要少,当然传输的速度就会提高而流量也会降低。
像微博,对于微博服务端数据非常多就是 JSON ,须要对这些请求回来的数据进行本地解析。由于 Web 和移动平台开发对流量要求要尽可能的少,对速度要求又要比較快,所以 JSON 就成为理想的数据交换语言。
把数据写成 JSON 结构过程称为“编码”过程,即是写入过程。把数据从 JSON 文档中读取处理的过程称为“解码”过程,即是解析和读取过程。
以下列举一些 JSON 经常使用的解析框架:
(1)SBJson
(2)TouchJSON
(3)YAJL 。基于SBJson,里面进行了优化,底层 API 使用 C 编写,上层 API 是 objective-c 编写。使用者能够有多不同的选择。
它不支持 ARC ,源代码下载地址:http://lloyd.github.com/yajl/
(4)JSONKit
(5)NextiveJson ,此框架不支持 ARC 。源代码下载地址:http://github.com/nextive/NextiveJson
(6)NSJSONSerialization 。从这个框架的命名规则来看。想你也猜到了它是苹果自家的 JSON 解析框架,它是 iOS5 之后提出来的。
详细的简单实例也是能够參考这篇博客:http://blog.csdn.net/enuola/article/details/7903632/ 有些方法在 iOS7 以后的版本号中会有警告,把它改动为 iOS7
以后支持的方法便可。
以下来实现一个利用 NSJSONSerialization 来进行解析的简单实现,当然也是能够用第三方框架,下载源代码。安装,假设不支持 ARC 配置便可。直接在 viewDidLoad 方法中进行解析
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.navigationItem.leftBarButtonItem = self.editButtonItem; self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController]; [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reloadView:)
name:@"reloadViewNotification"
object:nil]; NotesNextiveJsonParser *parser = [NotesNextiveJsonParser new];
//開始解析
[parser start]; NSString* path = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"json"]; //解析一个叫 Test.json 的文件
NSData *jsonData = [[NSData alloc] initWithContentsOfFile:path]; NSError *error; id jsonObj = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers error:&error]; if (!jsonObj || error) {
NSLog(@"JSON解码失败");
}
self.listData = [jsonObj objectForKey:@"Record"]; }
如有不正确,还望指点。
iOS 中 JSON 数据交换格式的更多相关文章
- Js中JSON数据交换使用总结
Json格式简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是JavaScript原 ...
- json 数据交换格式与java
http://wiki.mbalib.com/wiki/数据交换 数据交换是指为了满足不同信息系统之间数据资源的共享需要,依据一定的原则,采取相应的技术,实现不同信息系统之间数据资源共享的过程. 数据 ...
- 使用 C++ 处理 JSON 数据交换格式
一.摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传 ...
- 数据交换格式Json与XML
什么是数据交换格式: 主流的有Json.XML.HTML. 数据交换格式的应用场景: 移动端(安卓,IOS)通讯方式采用http协议+Json格式的restful风格. 很多互联网公司都是用Http协 ...
- 在.NET使用JSON作为数据交换格式
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhoufoxcn.blog.51cto.com/792419/517093 我们 ...
- 常用两种数据交换格式之XML和JSON的比较
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...
- XML和JSON两种数据交换格式的比较
在web开发领域,主要的数据交换格式有XML和JSON,对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的.一般都输出Json不输出xml,原因就是因为 x ...
- Java 常见数据交换格式——xml、json、yaml
目录 数据交换格式介绍 XML 使用DOM方式解析 使用SAX方式解析 使用DOM4J方式解析 使用JDOM方式解析 JSON 使用JSONObject方式将数据转换为JSON格式 利用JSONObj ...
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于JavaScript(Standard ECMA-262 3rd Edition - D ...
随机推荐
- 六十 数据库访问 使用SQLAlchemy
数据库表是一个二维表,包含多行多列.把一个表的内容用Python的数据结构表示出来的话,可以用一个list表示多行,list的每一个元素是tuple,表示一行记录,比如,包含id和name的user表 ...
- centos xampp 隐藏phpmyadmin地址
/opt/lampp/etc/extra/httpd-xampp.conf Alias /phpmyadmin "/opt/xampp/phpMyAdmin/" 改为 Alias ...
- [BZOJ4007][JLOI2015]战争调度(DP+主定理)
第一眼DP,发现不可做,第二眼就只能$O(2^{1024})$暴搜了. 重新审视一下这个DP,f[x][i]表示在x的祖先已经全部染色之后,x的子树中共有i个参战平民的最大贡献. 设k为总结点数,对于 ...
- HDU 6040 Hints of sd0061(划分高低位查找)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6040 [题目大意] 给出一个随机数生成器,有m个询问,问第bi小的元素是啥 询问中对于bi< ...
- 【虚树】hdu6161 Big binary tree
题意:一棵n个结点的完全二叉树,初始i号结点的权值为i.有两种操作:单点修改:询问经过某个结点的路径中,权值和最大的路径的权值和是多少. 修改的时候,暴力修改到根节点的路径上的点的f(x)即可. 跟虚 ...
- 【最大团转最大点独立集(匈牙利算法+时间戳优化)】BZOJ2744-[HEOI2012]朋友圈
[题目大意] 有两个国家A和B.存在以下朋友关系: 1.A国:每个人都有一个友善值,当两个A国人的友善值a.b,如果a xor b mod 2=1,那么这两个人都是朋友,否则不是: 2.B国:每个人都 ...
- Problem C: 指针:自定义函数length,调用它计算字符串的长度
#include<stdio.h> int length(char*s) { int i,count; while(*s!='\0') { *(s++); count++; } retur ...
- Problem A: 指针:调用自定义交换函数,完成三个数整从小到大排列
#include<stdio.h> int swap(int *p1,int *p2) { int flag; if(*p1>*p2) { flag=*p1; *p1=*p2; *p ...
- 求图的强连通分量--tarjan算法
一:tarjan算法详解 ◦思想: ◦ ◦做一遍DFS,用dfn[i]表示编号为i的节点在DFS过程中的访问序号(也可以叫做开始时间)用low[i]表示i节点DFS过程中i的下方节点所能到达的开始时间 ...
- [转] Mybatis 示例之 SelectKey
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. 不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦. sel ...