ToolBench

数据

JSON 格式化与校验

粘贴 JSON 即可美化缩进、压缩成一行或校验合法性。出错时显示解析器返回的原始信息,方便快速定位那个多余的逗号。

格式化后的 JSON 会显示在这里。

怎么用

  1. 把 JSON 粘贴到上方输入框。
  2. 点「格式化」加缩进,或点「压缩」去掉所有空白。
  3. 缩进可在 2 空格、4 空格、制表符之间切换。
  4. 若 JSON 不合法,下方会显示具体的解析错误。

JSON 比 JS 对象字面量严格

JavaScript 里合法的三样东西,在 JSON 里都不合法:尾随逗号、单引号字符串、注释。JSON 解析器遇到第一个无法接受的字符就停下,所以报错位置往往指向最后一个属性后面的那个逗号,而不是属性本身。改掉那一个字符,整份文档常常就好了。

数字并不总是安全的

JSON 没有整数类型,所有数字都按 IEEE-754 双精度浮点解析,超过 2^53 就丢精度:标识符 1234567890123456789 会变成 1234567890123456800。如果这个值是标识而不是数量——用户 ID、订单号、雪花 ID——那就从一开始就存成字符串。一旦经过解析器往返一次,原来的数字就再也找不回来了。

文件有几十兆的时候

浏览器格式化的做法是:把整份文档解析进内存,再重新序列化,所以实际上限大约是文件大小的两到四倍内存。一个 40 MB 的日志文件通常能把标签页拖死。这个量级应该先拆成一条条记录——JSON 日志多数是每行一条——再逐条格式化。

如果必须整体查看,流式工具才合适:jq . big.json 不需要一次性载入整个结构就能格式化,jq -c 则逐行压缩。

常见问题

我的 JSON 会被上传吗?

不会。解析由浏览器自带的 JSON 引擎完成,文本不会离开这个页面。

看着没问题的 JSON 为什么报错?

尾随逗号、单引号、注释都不是合法 JSON。错误信息指向解析器第一个无法接受的字符,那通常就是问题所在。

能处理多大的文件?

上限取决于浏览器可用内存,一般几 MB 没问题。文件越大格式化越慢,但始终在本地处理。

断网还能格式化吗?

可以。页面加载完成后所有计算都在内存里进行,断网也能继续用。

支持 JSON5、注释或尾逗号吗?

不支持,只认严格 JSON。注释和尾逗号都会报错——当你要确认一份文件在生产环境能否解析时,这正是想要的行为。