JSON(JavaScript Object Notation),是道格拉斯·克罗克福特(Douglas Crockford)于 2001 年发明的一种轻量级数据存储格式。易于阅读和编写,同时也易于解析和生成。
JSON 作为 JavaScript 的一个内置对象,同时 ActionScript、C、C#、ColdFusion、E、Java、JavaScript、ML、ObjectiveCAML、Perl、PHP、Python、Rebol、Ruby、Lua 等一系列的语言都提供支持。JSON 成为一个完全独立于语言的文本格式,因此成为数据交换的理想格式。
XML
在 JSON 出现之前,大家一直用 XML 来传递数据。因为 XML 是一种纯文本格式,所以它适合在网络上交换数据。
|
|
XML 本身不算太复杂,但是,加上 DTD、XSD、XPath、XSLT 等一大堆复杂的规范以后,任何正常的软件开发人员碰到 XML 都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚 XML 的规范。
JSON 语法
JSON 作为 JavaScript 的一个子集,它所支持的数据类型也与 JavaScript 中数据类型基本一致:
- number:和 JavaScript 的 number 完全一致;
- boolean:和 JavaScript 的 boolean 完全一致;
- string:和 JavaScript 的 string 类似;
- null:和 JavaScript 的 null 完全一致;
- array:和 JavaScript 的数组表示方式
[]
完全一致; - object:和 JavaScript 的对象表示方式
{}
类似;
为了保证各种语言的统一解析,JSON 规定字符串必须用双引号""
,对象的键也必须用双引号""
。
|
|
JSON 与 JavaScript 对象
JSON 中的[]
与 JavaScript 中的数组对象、JSON 中的{}
与 JavaScript 中的 JSON 式对象,他们并不是同一个东西。
JSON 是 JavaScript 中对象的字符串表示方式,本质上是 string,而 JavaScript 中的数组和 JSON 式对象,本质上是 object。
JSON 与 JavaScript 对象互转
JSON 作为一种数据存储格式变得日益流行。从 ES5 开始,就开始出现全局的 JSON 对象,该对象提供了两种方法,可以将 JSON 字符串和 JavaScript 对象进行相互转换。
stringify()
JSON 对象的stringify()
方法用于将 JavaScript 对象转换为 JSON 字符串。
|
|
parse()
JSON 对象的parse()
方法用于将 JSON 字符串转换为 JavaScript 对象。
|
|