JSON 中文引号、尾逗号和注释报错怎么修复?
JSON 语法错误通常来自双引号、逗号、注释或括号。趁手会提供中文提示,并在能够取得位置时显示行列;修复时应结合上下文判断,不能仅凭一句报错批量替换。
中文引号:把结构引号改成英文双引号
错误:
{“name”:“示例”}正确:
{"name":"示例"}中文引号出现在字符串内容内部时可以合法存在,不应把所有中文引号一律替换。
尾逗号:最后一个元素后不加逗号
错误:
{"id":1,}正确:
{"id":1}数组也一样:[1,2,] 应改成 [1,2]。注意不要删除元素之间的分隔逗号。
注释:JSON 与 JSONC 不相同
标准 JSON 不允许 // 或 /* ... */ 注释。编辑器配置使用的 JSONC 不一定能直接交给严格 JSON 解析器。字符串内的 URL 可能包含 //,不能用简单正则删除所有类似文本。
字符串里的引号要转义
{"name":"他说 \"你好\""}反斜杠也要按 JSON 规则转义。不要把 JavaScript 对象字面量(单引号、未加引号的键)当成标准 JSON。
为什么报错位置看起来偏了一点?
浏览器解析器常在“无法继续解析”的位置报错,真正原因可能在前一个元素。不同浏览器的报错信息也有差异;趁手的中文解释是辅助诊断,最终仍需检查完整语法。
语法依据:RFC 8259,第 2、4、7 节。