Json研究系列之——入门简介
2016-10-09 17:52
337 查看
引言
由于没有系统的学习,所以只是在项目中总是用到json,没有真正的总结过json。不能这样,还是抽个时间来说说吧……Json简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。我们都知道XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。
Json语法规则
1、数据在键值对中2、数据由逗号分隔
3、花括号保存对象
4、方括号保存数组
Json的两种结构
对象
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔。例如:<span style="font-size:18px;">{
key1:value1,
key2:value2,
...
}</span>
其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组
数组
数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成。例如:<span style="font-size:18px;">[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]</span>
字符串、json字符串和json对象
字符串:指使用“”双引号或’’单引号包括的字符。例如:var comStr = 'this is string';Json字符串:指的是符合json格式要求的js字符串。例如:varjsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
Json对象:指符合json格式要求的js对象。例如:varjsonObj = { StudentID: "100", Name: "tmac", Hometown:"usa" }
Json.parse——将json格式的字符串转换成json对象
<span style="font-size:18px;">var str ='{"name":"小强","age":16,"msg":["a","b"],"regex":"^http://.*"}';var json = JSON.parse(str);
console.log("name:" + json.name);
console.log("msgLen:" +json.msg.length);
// 结果
// name:小强
// msgLen:2</span>
Json.stringify——将json对象转换成json格式的字符串
<span style="font-size:18px;">var json = {"name":"小强","age":16,"msg":["a","b"],"regex":"^http://.*"};var str = JSON.stringify(json);
console.log("json:" + str);
console.log("jsonLen:" +str.length);
// 结果
// json:{"name":"小强","age":16,"msg":["a","b"],"regex":"^http://.*"}
// jsonLen:60</span>
Json优点
1、 简化了数据访问
在json中使用的这些数据分隔符, JavaScript引擎对数据结构(如字符串、数组、对象)的内部表示恰好与这些符号相同。这将开创一条比DOM技术更为便捷的数据访问途径。2、 非冗长性
在XML中,打开和关闭标记是必需的,这样才能满足标记的依从性;而在JSON中,所有这些要求只需通过一个简单的括号即可满足。在包含有数以百计字段的数据交换中,传统的XML标记将会延长数据交换时间。目前还没有正式的研究表明JSON比XML有更高的线上传输效率;人们只是通过简单的字节数比较发现,对于等效的JSON和XML有效负载,前者总是小于后者。至于它们之间的差距有多大,特别是在新的XML压缩格式下它们的差距有多大,有待进一步的研究。相关文章推荐
- Linq系列教程三(入门之查询简介)
- Berkeley DB Xml 入门系列之一: 简介与"query"示例程序详解
- Windows Server 2012 从入门到精通系列 之 Windows Server 2012简介
- sencha touch 入门系列 (一)sencha touch 简介
- 实时开发框架Meteor基础入门系列<零>--简介
- PHPLIB Template入门系列 - 1 简介(转寄)
- EHCache入门系列(一)–简介及配置
- ajax学习系列之一:Ajax 入门简介
- JavaScript语法入门系列(一) 简介
- Linux文件系统类型简介及支持的文件系统汇总--Linux入门到精通系列
- JSF入门系列教程(一) jsf简介,jsf是什么?
- Linq系列教程三(入门之查询简介)
- Spring 系列: Spring 框架简介- Spring AOP 和 IOC 容器入门
- 转载和积累系列 - JSON 入门指南
- 高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例
- Spring 系列: Spring 框架简介----Spring AOP 和 IOC 容器入门
- Spring 系列: Spring 框架简介- Spring AOP 和 IOC 容器入门
- 高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例
- 【Lucene3.6.2入门系列】第13节_Solr3.6.2简介以及整合Tomcat
- Nginx - 高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例