跳到内容

JSON 格式化和验证器

在浏览器中即时格式化、验证和压缩 JSON。用于检查 API 响应和整理配置文件。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式
如有问题或显示异常,请通过以下方式联系我们: 联系表单 — 我们利用反馈改进。

其他工具

相关文章

📖 常见的坑

在浏览器内对 JSON 进行格式化、校验与压缩。看似只是重排版,实则文档被解析后又重新写出,因此值有可能改变——规范并未完全规定数字如何表示、重复键该如何处理,这些部分交由实现自行决定。「格式化前后含义不变」这件事,其实并没有保证。

情形 会发生什么 怎么处理
大整数只是格式化一下就变了 JavaScript 的 JSON.parse 会把所有数字读作双精度浮点,因此超过 2 的 53 次方的整数无法精确表示,会被舍入到邻近的值。把 9007199254740993 格式化一下,就变成了 9007199254740992,而且既不报错也不告警。实务中危险的场景是 Twitter、Discord 那类大 ID,Snowflake ID,以及数据库的 BIGINT 主键你格式化后再贴回去的数据,如今指向的是另一条记录最糟的是,它是在你以为「只是排个版」的过程中坏掉的,因此没有任何契机让你去怀疑它。 请把大 ID 存成字符串——写作 "id": "9007199254740993",解析器就不会把它转成数字,值也就保住了。事实上 Twitter 的 API 很早就通过额外返回一个 id_str 字段来应对这个问题,而「从不参与运算的数字就存成字符串」在这一领域早已是成熟的设计决策。处理既有数据时,请先确认待格式化的内容里是否含有大整数;判别很简单——只要数值超过 16 位就该起疑(2 的 53 次方是 9,007,199,254,740,992,正好 16 位)。另外,请养成对格式化前后做 diff 的习惯——意料之外的值变化,别无他法可以发现。
重复的键悄悄合并成了一个 同一个键出现两次的 JSON,例如 {"a":1,"a":2}在规范上属于「行为未定义」:RFC 8259 说键「应当」唯一,但并未规定重复时该怎么办。几乎所有实现都让后者胜出,于是格式化后得到 {"a":2}第一个值消失得无影无踪。这在配置文件里相当要命:「明明写了配置却不生效」的原因,往往是同一个键在文件上方已经出现过一次,而格式化连这条证据也一并抹掉了 配置类 JSON 请使用能检测重复键的 linter——jsonlint 以及多数编辑器的 JSON 扩展都会给出警告。格式化工具无法用于检测,因为它会直接把重复「解决」掉——请把两者理解为用途不同的东西。而当你发现重复键时,要问的不是「哪个才对」,而是「为什么会写成两个」多数情况是有人粘贴配置时没注意到既有的那条只删掉其中一个,同样的事还会再发生配置文件一旦变长,把键按字母顺序排列,重复就能被肉眼看见。
带注释的 JSON 解析失败 标准 JSON 没有注释。这并非疏漏:制定规范的 Douglas Crockford 是有意移除的——因为注释开始被当作给解析器的指令来用,那会破坏互操作性。可实务中,允许注释的配置文件比比皆是:tsconfig.json.vscode/settings.json.eslintrc.json。它们属于另一种方言 JSONC(JSON with Comments)喂给标准 JSON 解析器必定失败「你以为是 JSON 的东西其实不是 JSON」——这才是此类报错的真面目。 要处理 JSONC,请使用专门的解析器——Node 上是 jsonc-parser,读取 VS Code 配置的工具用的正是它。若要把带注释的 JSON 转成标准 JSON,请先删掉注释再解析;但注释所承载的信息在那一刻就丢失了,因此不要把转换结果写回原文件。更宽泛地说:如果配置文件需要注释,那么一开始就选 YAML 或 TOML 而非 JSON,才是更诚实的答案一种无法记录「为什么是这个值」的格式,作为配置文件缺失了一项重要性质——对半年后来读它的人来说,那一行注释往往比配置本身更有价值。

格式化最见效的用途,是让差分变得可读。若要把 API 响应作为固定测试数据提交进仓库,请先格式化再提交:面对压缩成一行的 JSON,改动一个字符就会让整份文件变成差分,评审也就无从谈起。不过键的顺序需要留意某些格式化工具与某些语言会把键按字母重排,那么首次提交就是全行差分请在团队内不仅决定「是否格式化」,还要决定「是否排序键」,并在 CI 中机械地统一应用——各人配置不同时,无意义的差分会把评审淹没。最后是一条安全提醒:把 API 响应粘进任何格式化工具之前,请确认正文里没有夹带 Authorization 头或令牌。本页完全在浏览器内运行,但一旦养成「随手用哪个在线工具都行」的习惯,迟早会把生产环境的令牌发到别人的服务器上。

📖 使用方法

  1. 1
    粘贴 JSON
    从 API 响应或配置文件复制 JSON 并粘贴到输入框。
  2. 2
    选择格式化或压缩
    选择缩进宽度后点击"格式化"或"压缩"。
  3. 3
    验证和修正
    语法错误显示行号和原因,一键复制结果。

❓ 常见问题

支持带注释的 JSON 吗?
标准 JSON 不支持注释,但本工具提供宽松模式允许 // 和 /* */ 注释。
输入数据会发送到服务器吗?
不会。所有解析都在浏览器 JavaScript 中完成。
可以处理大型 JSON 吗?
数十 MB 以下实用可行。
可以按字母排序 key 吗?
在选项中启用"排序 key"。
🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送