如何校验 JSON
- 粘贴 JSON 或打开文件。校验会在你输入时自动进行。
- 如果显示绿色的“JSON 格式正确”提示和统计信息,说明文档正确无误。否则请查看错误信息:它会指出出错的行、列,以及该位置应有的内容。
- 修正高亮显示的行,或点击修复,然后对结果进行格式化,使其易于阅读。
常见 JSON 错误及修复方法
| 错误 | 示例 | 修复方法 |
|---|---|---|
| 尾随逗号 | [1, 2, ] | 删除 ] 或 } 前的逗号 |
| 单引号 | {'name': 'Ada'} | 改用双引号:{"name": "Ada"} |
| 键名未加引号 | {name: "Ada"} | 为键名加上引号:{"name": "Ada"} |
| 缺少逗号 | {"a": 1 "b": 2} | 在属性之间添加逗号 |
| 注释 | // settings | JSON 不支持注释,请删除 |
| 字符串中有换行 | "line 1⏎line 2" | 用 \n 代替真实的换行符 |
| 无效的值 | undefined、NaN、True | 使用 null、数字、true 或 false |
| 前导零 | {"zip": 01234} | 写成 1234,或保留为文本:"01234" |
| 缺少括号 | {"a": [1, 2} | 每个 [ 都要用 ] 闭合,每个 { 都要用 } 闭合 |
有效 JSON 的语法规则
JSON 由 RFC 8259 定义。有效的 JSON 文档须遵守以下几条严格的规则:
- 有且只有一个顶层值,通常是对象
{}或数组[]。 - 对象成员是以逗号分隔的
"key": value键值对;键始终是双引号括起的字符串。 - 字符串使用双引号;字符串内只允许
\" \\ \/ \b \f \n \r \t和\uXXXX转义。 - 数字为十进制:不能有前导零、不能带
+号、不能用十六进制,也不能是NaN或Infinity。 true、false和null必须小写。- 各个记号之间可以有空格、制表符和换行符,但不能有注释。
在命令行中校验 JSON
- Python:
python -m json.tool file.json会输出第一个错误所在的行和列。 - jq:如果文件无效,
jq empty file.json会输出错误信息并退出。 - Node.js:
node -e "JSON.parse(require('fs').readFileSync('file.json', 'utf8'))"
常见问题
JSON 校验器和 JSON Linter 有什么区别?
校验器检查文本是否符合 JSON 语法;Linter 通常还会强制统一代码风格。本 JSON 校验工具严格按照 RFC 8259 进行校验,配合“格式化”功能,还能让缩进保持一致。
可以根据 JSON Schema 进行校验吗?
本页面只检查语法。如需描述数据的预期结构,可以使用我们的 JSON Schema 生成器,根据示例文档创建 Schema。
为什么我的 JSON 在这里有效,却被其他程序拒绝?
程序通常要求特定的结构(某些键或类型)、特定的编码(如不带字节顺序标记的 UTF-8),或者数字处于有限的范围内。语法有效的 JSON 仍可能违反这类应用规则。
带注释的 JSON(JSONC)有效吗?
无效。标准 JSON 不允许注释。某些编辑器会在设置文件中接受注释(JSONC),但 API 和 JSON.parse 不接受。“修复”功能可以帮你删除注释。