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
粘贴 JSON从 API 响应或配置文件复制 JSON 并粘贴到输入框。
-
2
选择格式化或压缩选择缩进宽度后点击"格式化"或"压缩"。
-
3
验证和修正语法错误显示行号和原因,一键复制结果。
❓ 常见问题
支持带注释的 JSON 吗?
标准 JSON 不支持注释,但本工具提供宽松模式允许 // 和 /* */ 注释。
输入数据会发送到服务器吗?
不会。所有解析都在浏览器 JavaScript 中完成。
可以处理大型 JSON 吗?
数十 MB 以下实用可行。
可以按字母排序 key 吗?
在选项中启用"排序 key"。
🐛 此工具出现问题了吗?
免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。
✅
感谢您的反馈!
已送达运营者,将用于改进工具。