JSON 的格式要点可以概括为:**极致的严格**

JSON 的格式要点可以概括为:极致的严格

虽然 JSON 看起来很像 JavaScript 的对象,但它的语法规则要严格得多。哪怕多写了一个逗号,或者少写了一个引号,整个解析都会报错(Crash)。

以下是 JSON 格式必须遵守的 6 大核心铁律

1. 键(Key)必须用双引号

这是 JSON 和 JS 对象最大的区别,也是新手最容易犯的错。

  • ❌ 错误:{ name: "Alice" } (JS 写法)
  • ❌ 错误:{ 'name': "Alice" } (单引号也不行)
  • ✅ 正确:{ "name": "Alice" }

2. 字符串(String)必须用双引号

JSON 只有一种字符串引号,就是双引号 "

  • ❌ 错误:"gender": 'male'
  • ✅ 正确:"gender": "male"

3. 不允许“尾后逗号”(Trailing Comma)

在数组或对象的最后一项后面,绝对不能加逗号。

  • ❌ 错误:[1, 2, 3, ]
  • ❌ 错误:{ "a": 1, "b": 2, }
  • ✅ 正确:[1, 2, 3]

4. 极其“洁癖”的数据类型

JSON 只支持 6 种数据类型,不支持任何与“逻辑”或“动态”相关的内容。

支持的类型:

  1. String: "abc"
  2. Number: 123, 3.14, -1 (禁止前导零,如 012)
  3. Boolean: true, false (必须小写)
  4. Null: null (必须小写)
  5. Object: { ... }
  6. Array: [ ... ]

严厉禁止的类型(重点):

  • Function: 不能传输函数。
  • Undefined: 如果字段是 undefined,转换时会被直接丢弃(消失)。
  • Date: 日期对象会被转成字符串(如 "2025-12-01T...")。
  • NaN / Infinity: 会被转成 null
  • Symbol: 不支持。

5. 禁止注释

JSON 文件里不能写 ///* */ 注释。
JSON 的设计者认为:数据就是数据,不需要解释。如果你需要注释,说明你的字段命名不够清晰,或者你应该把它写在文档里。

6. 文件结构必须封闭

一个合法的 JSON 文件(或字符串),最外层必须是一个 Object {} 或者一个 Array []。不能是一堆零散的键值对。


一张图看懂对比

特性 JavaScript 对象 (JS Object) JSON
键名引号 可省略,可用单引号 必须双引号
字符串引号 单双引号、反引号均可 必须双引号
尾部逗号 允许 (兼容性好) 严禁
注释 允许 严禁
值类型 函数、undefined、NaN、正则等 仅限 6 种基础数据

总结

你可以把 JSON 想象成 “被冷冻的、脱水的 JavaScript 对象”

  • 它去掉了所有的“活性成分”(函数、动态逻辑、注释)。
  • 它规定了唯一的“包装格式”(双引号、无逗号)。

这种严格性正是它能成为跨语言通用标准的原因:因为它太简单、太死板了,所以 Python、Java、Go 解析起来没有任何歧义。