睿工具睿工具

JSON 报错在哪一行?格式化与校验指南

更新于 2026-10-17

调试接口时最难受的不是报错,是报错不告诉你错在哪:几千个字符挤成一行,浏览器只说一句 "Unexpected token in JSON at position 3826"。

先格式化,再定位——这是排 JSON 问题的固定顺序。

第一步:格式化,让错误精确到行列

  1. 打开 JSON 格式化,把整段 JSON 粘进去。
  2. 选缩进(2 空格 / 4 空格 / Tab 都行),点「格式化」。
  3. 如果 JSON 合法,你会得到一份带换行与缩进、能逐层看结构的文本;如果不合法,工具会直接告诉你出错的行与列——对着那个位置往前后各看几行,问题通常就在那里。

排完错再点「压缩」,就能得到发送用的单行版本;需要和上一次的 JSON 对比时,先勾上「键排序」,让键名顺序统一,diff 只会显示真正的改动。

这些写法不是合法 JSON

标准 JSON 比很多人以为的严格。下面几种在多行文本里"看着没问题",但都不是合法 JSON:

  • 单引号:键和字符串都必须是双引号;
  • 注释:JSON 不支持 // 或 /* */,带注释的配置文件是 JSONC 之类的方言;
  • 尾逗号:数组或对象最后一个元素后面不能有逗号;
  • 中文标点:从文档里复制配置时最常见的坑,,、"、: 都不行;
  • 键名没有引号:{name: "x"} 不是 JSON,{"name": "x"} 才是;
  • 字符串里有裸换行:字符串内换行必须写成 \n。

报错报在"上一行末尾、下一行开头"附近时,先怀疑这几项。

工具的边界

本工具只解析文本,不执行里面的任何内容,格式化和压缩都在你的浏览器里完成,内容不会上传。它按标准 JSON 校验——JSON5、带注释的 JSONC 本来就不是合法 JSON,会被判为语法错误,这是预期行为。

常见问题

格式化会改动我的内容吗

不会。格式化只调整空白与缩进,"压缩"只是去掉空白;勾选"键排序"只改变键的排列顺序,值一个都不动。如果你需要保持原始键序,就不要勾它。

为什么这段 JSON 在代码里能跑,到这里报错

不少语言和配置格式(JS 对象字面量、JSON5、YAML)比标准 JSON 宽松:允许单引号、尾逗号、注释、无引号键。能跑不代表是合法 JSON——接口传输用的必须是标准 JSON,报错时按上面的清单逐项排除。

支持带注释的配置文件吗

不支持,注释不是标准 JSON 的一部分。如果你的配置必须带注释,它就不能直接当 JSON 发给接口;可以先去掉注释再校验。

很大的 JSON 也能贴进去吗

工具没有声明大小上限,但它在浏览器内存里处理;几十 MB 级别的文件建议改用命令行工具(如 jq),浏览器里粘贴大文本本身就容易卡。