JSON指JavaScript对象表示法(JavaScript Object Notation),是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,有效地提升网络传输效率。
语法规则
在JS语言中,一切皆对象。任何支持的类型都可以通过JSON来表示,如数字、字符串、逻辑值、对象、数组、null。
对象和数组是比较特殊且常用的两种类型:
- 对象表示为键值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
对象:对象在JS中是使用花括号包裹起来的内容。在面向对象语言中,key为对象的属性,value为对应的值。键名可以使用整数和字符串来表示,值的类型可以是任意类型。
数组:数组在JS中是方括号包裹起来的内容。在JS中,数组是一种比较特殊的数据类型,可以像对象那样使用键值对,也可以使用索引,值的类型也可以是任意类型。
JSON与JS对象的关系
JSON是JS对象的字符串表示法,使用文本表示JS对象信息,本质是字符串。
JSON和JS对象互转
从对象转换为JSON字符串,使用JSON.stringify()方法
从JSON转换为对象,使用JSON.parse()方法
和XML的对比
可读性
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式。
可扩展性
XML有很好的扩展性,JSON也有。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。
编码难度
XML有丰富的编码工具,JSON也有提供的工具。不过,xml文档结构上的字符更多。
解码难度
XML的解析方式有两种:
一是通过文档模型解析,也就是通过父标签索引出一组标记。但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。
另外一种方法是遍历节点(document以及childNodes)。可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。
类似XML的特性
- JSON是纯文本
- JSON具有“自我描述性”
- JSON具有层级结构
- JSON可通过JavaScript进行解析
- JSON数据可使用AJAX进行传输
相比XML的不同之处
- 没有结束标签
- 更简短
- 读写速度更快
- 能够使用内建的JavaScript eval()方法进行解析
- 使用数组
- 不使用保留字
对于AJAX应用程序来说,JSON比XML更快更易使用
JSON最常见的用法之一,是从Web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为JavaScript对象,在网页中使用。
参考源
百度百科:https://baike.baidu.com/item/JSON/2462549?fr=aladdin
W3school:http://www.w3school.com.cn/json