如何修复无效的 JSON

像“Unexpected token”这样的提示很少说明到底哪里错了。本指南介绍需要掌握的 JSON 规则、如何找到错误的准确位置,以及如何修复导致 JSON 无效的常见错误。

打开工具: JSON 格式化工具

最容易出错的规则

  • 字符串和键名只能用双引号:"name",不能写成 'name'。
  • 每个键名都必须是带引号的字符串。{name: 1} 在 JavaScript 中有效,但不是 JSON。
  • 对象或数组的最后一项后面不能有逗号。
  • 不允许任何形式的注释。
  • 字面值只有 true、false 和 null,而且必须小写。
  • 数字不能有前导 0、加号或十六进制写法,也不允许 NaN 和 Infinity。

找到错误的准确位置

解析器报告的是它停止解析的位置,通常就在真正的错误之后。如果错误指向右括号,请检查上一行:最常见的原因是末尾多了逗号或少了引号。

本工具会显示行号和列号,引用出错的那一行并在问题下方做标记,还有“在输入框中显示”按钮可以直接选中出错的字符,在手机上尤其方便。

复制粘贴带来的错误

从文字处理软件、聊天应用或邮件中复制的 JSON,常常含有中文或弯引号(“ ”)而不是英文直引号("),或者含有看不见的不换行空格。看起来没问题,实际上却无效。“修复 JSON”会替换这些字符。

从 Python 输出复制的数据会有 True、False、None 和单引号;从 JavaScript 代码复制的数据可能有无引号的键名和注释。“修复 JSON”会把这些都转换成标准 JSON。

JSON 被截断时

如果日志或终端输出被截断,会出现“JSON 提前结束”的错误。没有任何工具能可靠地猜出缺失的部分。请重新复制完整的响应,或者保存成文件后再打开该文件。

检查修改结果

修改后状态栏会变成绿色,并显示文档的键数和嵌套层级。在代码或配置中使用之前,切换到树形视图确认结构是否符合预期。