严格 JSON,以及几乎所有报错都源于的四类写法
JSON 只有一套规则,没有扩展语法:每个字符串、每个键都必须用双引号,没有注释,没有尾随逗号,也写不出 NaN、Infinity、undefined —— 那些是 JavaScript 的值,JSON 没有对应的写法。一段看起来很像 JSON 的 JavaScript 对象字面量,通常并不是 JSON:配置文件解析失败,最常见的原因就是它。
所以文本被拒绝时,这个页面不只报错,还会点名错在哪:右括号前多了逗号,会提示 JSON 不允许在最后一项后面加逗号;用了单引号,会提示 JSON 字符串必须用双引号;键没加引号,会提示 JSON 的键必须是字符串;出现 // 或 /* */,会明确指出那是注释。这四类,加上冒号后面缺值,几乎覆盖了所有人粘贴过的坏文档。
严格 JSON 唯一不会报错的坑,是同一个对象里出现重复键:以最后一个为准,前面的值悄悄消失 —— 等到有东西能数它的时候,它早就不在解析结果里了。这是格式本身的行为;也正因为它是静默失败而不是大声报错,才格外容易坑人。