JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAscript(欧洲计算机协会制定的js规范)的一个子集,采用彻底独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提高网络传输效率。javascript
在 JS 语言中,一切都是对象。所以,任何支持的类型均可以经过 JSON 来表示,例如字符串、数字、对象、数组等。可是对象和数组是比较特殊且经常使用的两种类型。
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可使用整数和字符串来表示。值的类型能够是任意类型。
数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也能够像对象那样使用键值对,但仍是索引使用得多。一样,值的类型能够是任意类型。
简单地说
[1] ,JSON 能够将 JavaScript 对象中表示的一组数据转换为字符串,而后就能够在网络或者程序之间轻松地传递这个字符串,并在须要的时候将它还原为各编程语言所支持的数据格式,例如在 PHP 中,能够将 JSON 还原为数组或者一个基本对象。在用到AJAX时,若是须要用到数组传值,这时就须要用JSON将数组转化为字符串
和XML进行比较:
可读性
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。
可扩展性
XML天生有很好的扩展性,JSON固然也有,没有什么是XML能够扩展而JSON却不能扩展的。不过JSON在Javascript主场做战,能够存储Javascript复合对象,有着xml不可比拟的优点。
编码难度
XML有丰富的编码工具,好比Dom4j、JDom等,JSON也有提供的工具。无工具的状况下,相信熟练的开发人员同样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多不少结构上的字符。
解码难度
XML的解析方式有两种:
一是经过文档模型解析,也就是经过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),可是这样是要在预先知道文档结构的状况下使用,没法进行通用的封装。
另一种方法是遍历节点(document 以及 childNodes)。这个能够经过递归来实现,不过解析出来的数据仍旧是形式各异,每每也不能知足预先的要求。
凡是这样可扩展的结构数据解析起来必定都很困难。
JSON也一样如此。若是预先知道JSON结构的状况下,使用JSON进行数据传递简直是太美妙了,能够写出很实用美观可读性强的代码。若是你是纯粹的前台开发人员,必定会很是喜欢JSON。可是若是你是一个应用开发人员,就不是那么喜欢了,毕竟xml才是真正的结构化标记语言,用于进行数据传递。
而若是不知道JSON的结构而去解析JSON的话,那简直是噩梦。费时费力不说,代码也会变得冗余拖沓,获得的结果也不尽人意。可是这样也不影响众多前台开发人员选择JSON。由于json.js中的toJSONString()就能够看到JSON的字符串结构。固然不是使用这个字符串,这样仍旧是噩梦。经常使用JSON的人看到这个字符串以后,就对JSON的结构很明了了,就更容易的操做JSON。
以上是在Javascript中仅对于数据传递的xml与JSON的解析。在Javascript地盘内,JSON毕竟是主场做战,其优点固然要远远优越于xml。若是JSON中存储Javascript复合对象,并且不知道其结构的话,我相信不少程序员也同样是哭着解析JSON的。
除了上述以外,JSON和XML还有另一个很大的区别在于有效数据率。JSON做为数据包格式传输的时候具备更高的效率,这是由于JSON不像XML那样须要有严格的闭合标签,这就让有效数据量与总数据包比大大提高,从而减小同等数据流量的状况下,网络的传输压力
[2] 。
参考网站:https://baike.baidu.com/item/JSON/2462549?fr=aladdin