此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

JSON

基线
广泛可用
*

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

* 此特性的某些部分的支持程度可能有所不同。

JSON 命名空间对象包含用于解析 JavaScript 对象表示法JSON)和将值转换为 JSON 字符串的静态方法。

描述

与大多数全局对象不同,JSON 不是一个构造函数。不能将它与 new 运算符 一起使用,也不能将 JSON 对象作为函数调用。JSON` 的所有属性和方法都是静态的(就像 Math 对象一样)。

JavaScript 与 JSON 的区别

JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值和 null。它基于 JavaScript 语法,但与之不同:大部分 JavaScript 不是 JSON。例如:

对象和数组

属性名称必须是双引号括起来的字符串;禁止出现尾随逗号

数值

禁止出现前导零。小数点后必须至少有一位数字。不支持 NaNInfinity

任何 JSON 文本都是有效的 JavaScript 表达式,但仅限于 JSON 超集修订之后。在修订之前,U+2028 行分隔符和 U+2029 段分隔符允许在 JSON 的字符串字面量和属性键中使用;但在 JavaScript 字符串字面量中使用同样的分隔符会导致 SyntaxError

其他区别包括只允许双引号字符串,不支持 undefined 或注释。对于希望使用基于 JSON 的更人性化配置格式的用户,有 Babel 编译器使用的 JSON5,以及更常用的 YAML

在 JavaScript 对象字面量与 JSON 中,相同的文本可能代表不同的值。如需了解更多信息,请参阅对象字面量语法与 JSON 的对比

完整的 JSON 语法

有效的 JSON 语法由以下语法正式定义,该语法用 ABNF 表示,抄自 IETF JSON 标准(RFC)