跳到正文
DevTools / JSON 格式化校验

JSON 格式化校验

格式错误的 JSON 是接口调用失败最常见的原因,而运行时给出的报错——“第 4721 个字符处出现意外 token”——在 200 KB 的响应里几乎帮不上忙。本工具在报错时给出精确的行号和列号,按你选择的缩进美化,为传输压缩,支持折叠与逐层查看的树视图,可对解析后的文档执行 JSONPath 查询,并统计键数量、最大深度与体积。

完全在浏览器本地运行——不会上传任何内容。

输入
输出

JSONPath 查询

例如 $.items[*].name

工作原理

JSON 的语法很小,几乎每个解析错误都可归为四类:对象或数组结尾多出的逗号、单引号字符串、未加引号的键,以及注释。它们在 JavaScript 对象字面量里都合法,在 JSON 里却都不合法,这正是从源码里复制片段经常失败的原因。本工具会报出第一个问题字符的偏移、行列位置并显示周边文本,通常一眼就能看出问题所在。

美化只是在 token 之间插入空白,不改变含义;压缩则删掉语法不要求的每一个字节,通常能把格式化后的文档缩小 30% 到 60%。两者都不会改动字符串内容、数字或键的顺序——会重排键或改写数字的格式化器一定是错的,因为对象键顺序与数值精度对接收方程序而言都是可观察的行为。

树视图之所以必要,是因为把大文档当文本读无法扩展。折叠一个对象即隐藏其子树,让你直达关心的分支,每个节点的路径都会显示出来方便复制引用。需要程序化提取时,诸如 $.items[?(@.price > 100)].sku 的 JSONPath 表达式可以跨越整个文档选择节点,包括穿透数组和通配符,这比滚动查找“某个字段的每一次出现”要快得多。

有一点值得知道:JavaScript 的数字是 IEEE-754 双精度浮点,超过 2^53 的整数在解析时会丢精度。雪花 ID 或数据库 bigint 会悄悄变得不对——1234567890123456789 会变成 1234567890123456800。本工具会检测超出安全范围的整数并给出警告,而不是静默取整,因为这种错误在数据库查询匹配失败之前完全不可见。

常见应用场景

  • 格式化压缩过的接口响应,读懂结构并找到需要的字段。
  • 定位配置文件在部署时解析失败的那个确切字符。
  • 在嵌入测试或种子脚本前压缩 JSON 夹具。
  • 用 JSONPath 从深层嵌套的响应中批量提取所有匹配值。
  • 检查载荷中是否含有会在 JavaScript 中丢失精度的大整数。
  • 对比两次响应的键数量与深度,判断 schema 在版本间发生了什么变化。

最后更新: 2026-10-14

常见问题解答

JSON 看起来没问题,为什么解析失败?

常见原因有四个:对象或数组最后一项后多出的逗号、单引号字符串、未加引号的键、以及注释。RFC 8259 都不允许,但 JSON5、JSONC 和 JavaScript 都允许。还有第五种可能:不可见字符。文件开头的字节序标记,或从文档里复制来的不间断空格,都会产生肉眼看上去“不可能出错”的报错。

格式化会改变数据吗?

不会。JSON 中 token 之间的空白不承载含义,因此对任何合法文档而言,美化与压缩互为逆操作。对象键的顺序同样会被保留,这一点很重要,因为有些系统对顺序敏感——例如需要把文档规范化后做哈希签名的场景。格式化不会重排数组:数组顺序是数据,任何正确的格式化器都不会改动它。

JSONPath 与普通搜索有什么区别?

JSONPath 是 JSON 的查询语言,大致相当于 XML 的 XPath。像 $.orders[?(@.total > 500)].id 这样的过滤表达式会遍历文档结构,返回每一个匹配节点,而不是返回字符串第一次出现的文本位置。这很关键,因为纯文本搜索无法区分名为 id 的字段和值里恰好含有字母 id 的地方,而 JSONPath 作用于解析后的树,能够理解类型。

我的数据会被发送到服务器吗?

不会。解析、格式化与查询全部在浏览器内的 JavaScript 中运行,操作期间页面不发出任何网络请求。对 JSON 工具而言这一点尤其重要,因为接口响应里经常含有访问令牌、个人数据和内部主机名,服务端格式化工具会照单全收。打开浏览器网络面板即可核实。

相关工具