描述
与大多数全局对象不同,JSON 不是一个构造函数。不能将它与 new 运算符 一起使用,也不能将 JSON 对象作为函数调用。JSON` 的所有属性和方法都是静态的(就像 Math 对象一样)。
JavaScript 与 JSON 的区别
JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值和 null。它基于 JavaScript 语法,但与之不同:大部分 JavaScript 不是 JSON。例如:
任何 JSON 文本都是有效的 JavaScript 表达式,但仅限于 JSON 超集修订之后。在修订之前,U+2028 行分隔符和 U+2029 段分隔符允许在 JSON 的字符串字面量和属性键中使用;但在 JavaScript 字符串字面量中使用同样的分隔符会导致 SyntaxError。
其他区别包括只允许双引号字符串,不支持 undefined 或注释。对于希望使用基于 JSON 的更人性化配置格式的用户,有 Babel 编译器使用的 JSON5,以及更常用的 YAML。
在 JavaScript 对象字面量与 JSON 中,相同的文本可能代表不同的值。如需了解更多信息,请参阅对象字面量语法与 JSON 的对比。
完整的 JSON 语法
有效的 JSON 语法由以下语法正式定义,该语法用 ABNF 表示,抄自 IETF JSON 标准(RFC):