← 退出

JSON 格式化

美化、压缩、校验 JSON

输入 JSON

关于JSON 格式化

这个工具面向手里有一段难读或可能出错的 JSON 的人:接口返回的单行响应、被截断的日志、手写的配置文件。它用浏览器自带的 JSON.parse 解析,成功后重新输出为 2 空格缩进的多行文本,或压缩成一行。它是严格的标准 JSON 校验,不是宽松解析器——不会帮你修复错误,不支持注释、单引号或尾逗号。

使用步骤

  1. 把内容粘贴到「输入 JSON」文本框,或点右上角「上传 .json 文件」读入文件(会替换框里已有内容)。
  2. 点「格式化」得到 2 空格缩进的结果,或点「压缩」得到不含多余空白的单行结果。
  3. 合法时下方出现「输出」区,可点「复制」,或点「下载」保存为 formatted.json。
  4. 不合法时会显示红色的「语法错误: 」加具体原因,输出区同时清空;修改后重新点击按钮即可。

一个实际的例子

输入 {"id":12345678901234567890,"price":1.50,"n":1e3} 并格式化,得到三行:id 变成 12345678901234567000,price 变成 1.5,n 变成 1000。这说明工具会把数字解析成 JavaScript 的双精度浮点数再输出,而不是原样保留文本。再举一个出错的例子:输入 {"a":1,} 会得到 Expected double-quoted property name in JSON at position 7 (line 1 column 8)(在 Node 22 的引擎上实测,措辞和是否带行列号取决于你浏览器的版本)。

支持范围与已知限制

  • 缩进固定为 2 个空格,没有 4 空格或 Tab 选项;压缩即无缩进无换行。
  • 超过 2^53 的整数、位数很多的小数会丢精度,如上例;1.50 会变 1.5,1e3 会变 1000。处理订单号、雪花 ID 前请核对,必要时在源头把它们写成字符串。
  • 重复的键只保留最后一个;纯数字形式的键(如 "1"、"2")会被排到对象最前面,所以输出的键顺序可能与输入不同。
  • 错误信息来自浏览器引擎,工具本身不画行号、不高亮出错位置;新版 Chrome、Firefox 通常给出位置,旧浏览器可能只说 Unexpected token。
  • 没有大小限制检查,很大的文件取决于浏览器内存;上传文件按文本读取,不做编码检测。
  • 中文等非 ASCII 字符会原样输出,不会转成 \u 转义;而输入里的转义序列会被还原为字符。

常见问题:为什么带注释的 JSON 报错?

标准 JSON 不允许注释。tsconfig.json、VS Code 配置等 JSONC 文件常带注释,放进来会报错,需要先手动删除注释。

常见问题:单引号和尾逗号为什么不行?

JSON 规定字符串和键名必须用双引号,最后一个元素后不能有逗号。{'a':1} 和 [1,2,] 都会被拒绝,这是工具有意保持与 JSON.parse 一致。

常见问题:格式化会改变数据吗?

结构不变,但如上所述数字可能被规整,键顺序可能变化。只关心排版时问题不大,若要精确比对原文,请用文本对比而不是靠重新输出。

常见问题:压缩和格式化后的数据语义一样吗?

一样。两者只差空白字符,解析后得到相同的数据,所以压缩适合发送与存储,格式化适合阅读。

数据处理说明

解析与输出都在浏览器本地完成,粘贴或上传的内容不会发送到服务器;「下载」是在本地生成文件。