JSON格式数据
JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式,2001年由 Douglas Crockford提出,目的是代替繁琐笨重的XML格式。
JSON 是一种语法用来序列化对象、数组、数值、字符串、布尔值和 null 。它基于 JavaScript 语法,但与之不同:JavaScript不是JSON,JSON也不是JavaScript。
每个 JSON 对象,就是一个值。JSON 对值的类型和格式有严格的规定:
复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
字符串必须使用双引号表示,不能使用单引号。
对象的键名必须放在双引号里面。
数组或对象最后一个成员的后面,不能加逗号。
前导零是禁止的(在 JSON.stringify 零将被忽略,但在 JSON.parse 它将抛出 SyntaxError);小数点后必须至少有一位数字。
JSON格式数据如何表示对象
JSON对象是一个无序的「键-值」集合,对象的键名必须用双引号包裹,最后一个成员后面不能加逗号。
以下三种写法都可以表示对象:
{}
{"key1": "value1"} // string 对应 "key1",value 对应 "value1"
{"key1": "value1", "key2": "value2"}
window.JSON
window.JSON是浏览器的内置对象(本地化的JSON对象),用来检测对JSON的支持情况。
如果在旧的浏览器中使用JSON,需要JavaScript库。在JavaScript中执行解析和序列化效率往往不高,所以为了提高执行速度,现在新的浏览器原生扩展了对JSON的支持,可以直接通过JavaScript来调用JSON了。这种本地化的JSON对象被纳入了ECMAScript 5标准,成为了下一代JavaScript语言的一部分。
把JSON 格式的字符串转换为 JS 对象
JSON.parse方法用于将JSON字符串转化成对象,如果传入的字符串不是有效的JSON格式,JSON.parse方法将报错。
把 JS对象转换为 JSON 格式的字符串
JSON.stringify方法用于将一个值转为字符串。该字符串符合 JSON 格式,并且可以被JSON.parse方法还原。
需要注意的是:
- 对于原始类型的字符串,转换结果会带双引号
- 如果原始对象中,有一个成员的值是undefined、函数或 XML 对象,这个成员会被过滤。
- 如果数组的成员是undefined、函数或 XML 对象,则这些值被转成null
- 正则对象会被转成空对象
- JSON.stringify方法会忽略对象的不可遍历属性。