JSON 格式化和校验怎么看?常见 JSON 报错原因与排查方法
JSON 报错看不懂?这篇整理逗号、引号、转义、数组对象结构、接口返回和配置文件里的常见 JSON 错误,并提供在线格式化校验方法。
打开配套工具 →JSON 是接口、配置文件、前端状态、日志里最常见的数据格式之一。它看起来简单,但一旦报错,很多人只看到一句 Unexpected token,不知道该改哪里。
这篇讲清楚 JSON 格式化和校验时最常见的问题:逗号、引号、转义、对象数组结构,以及怎么用 JSON 格式化 / 校验工具 快速定位。
JSON 最容易错在哪里?
先看一个错误示例:
{
name: "海豹工具箱",
"url": "https://flooc.com/tools",
"tags": ["json", "tool",],
}这里至少有三个问题:
name没有用双引号包起来。- 数组最后一个元素后面多了逗号。
- 对象最后一个字段后面也多了逗号。
JavaScript 对象可以更宽松,但标准 JSON 不行。很多 JSON 报错,都是把 JavaScript 对象写法当成 JSON 了。
常见 JSON 错误清单
| 错误类型 | 错误写法 | 正确写法 |
|---|---|---|
| key 没加双引号 | {name: "A"} | {"name": "A"} |
| 使用单引号 | {'name': 'A'} | {"name": "A"} |
| 多余尾逗号 | {"a": 1,} | {"a": 1} |
| 字符串换行 | "hello\n 直接断行 | 使用 \\n |
| 注释 | // comment | JSON 不支持注释 |
| 值写成 undefined | {"a": undefined} | 用 null 或删除字段 |
如果你从代码里复制对象,最常见的问题就是:单引号、注释、尾逗号和未加引号的 key。
格式化和校验有什么区别?
格式化 是把合法 JSON 排版得更容易阅读,例如缩进、换行、排序。
校验 是判断它是不是合法 JSON。如果本身不合法,就无法格式化,只能先修语法错误。
所以工具的使用顺序一般是:
- 粘贴 JSON。
- 先看是否有解析错误。
- 如果有错误,根据行列号定位。
- 修好后再格式化或压缩。
JSON 格式化 / 校验工具 会在本地解析 JSON,并显示错误、层级和字段统计,适合接口调试时快速看结构。
接口返回 JSON 怎么看?
接口返回很长时,不要直接肉眼扫。建议先看三件事:
- 顶层是对象还是数组。
- 关键字段在哪里,比如
data、items、error。 - 数字、布尔值、null 是否符合预期。
例如:
{
"code": 0,
"message": "ok",
"data": {
"items": [
{"id": 1, "name": "JSON 工具"}
]
}
}这个结构里,真正列表在 data.items。如果前端渲染失败,应该检查读取路径是不是写错,而不是只看接口是否 200。
JSON 字符串转义怎么处理?
有时候你拿到的不是 JSON,而是「JSON 字符串」,例如:
"{\"name\":\"海豹工具箱\",\"url\":\"https://flooc.com/tools\"}"这种内容外层本身是一个字符串,里面的引号被转义了。它需要先反转义,再当 JSON 解析。
这类问题可以用 JSON 字符串转义 / 反转义工具 处理,再回到 JSON 格式化 / 校验工具 查看结构。
JSON 很大时怎么排查?
大型 JSON 不建议从头看到尾。可以这样做:
- 先格式化,确认层级。
- 折叠大数组,只看第一条。
- 搜索关键字段。
- 对比正常样本和异常样本。
- 如果要取字段,用 JSONPath 测试器 验证路径。
如果是接口联调,最好保存一份「正常返回」和「异常返回」,用 文本 Diff 工具 对比差异。
常见问题
JSON 可以写注释吗?
标准 JSON 不支持注释。如果你在配置文件里看到注释,那可能是 JSONC、YAML 或某个工具自己的扩展格式。
JSON key 必须双引号吗?
是的,标准 JSON 的 key 必须使用双引号。单引号和不加引号都不合法。
为什么浏览器控制台能接受,接口却不行?
因为浏览器控制台里写的是 JavaScript 对象,不一定是标准 JSON。接口、配置和数据交换通常要求严格 JSON。
格式化会上传数据吗?
海豹工具箱的 JSON 工具 在浏览器本地处理文本,适合处理接口返回、配置片段和调试数据。
小结
JSON 报错多数不是复杂问题,而是格式规则没对齐:双引号、尾逗号、注释、转义和层级路径。
排查时先用 JSON 格式化 / 校验工具 确认语法,再根据需要使用 JSONPath 测试器、JSON 转 TypeScript 类型 或 JSON Schema 校验器 做进一步检查。