如何格式化 JSON
- 粘贴 JSON,将
.json文件拖到编辑器中,或从 URL 加载。 - 点击格式化(或按 Ctrl+Enter),并选择 2 个空格、4 个空格或制表符缩进。压缩会删除所有空白字符,键名排序会按字母顺序排列属性。
- 如果 JSON 无效,错误提示框会显示出错的行、列和原因,并高亮该行。修复可自动修正尾随逗号、注释、引号等类似错误。
保持数据原样的 JSON 格式化工具
许多在线格式化工具会先用 JSON.parse 解析、再用 JSON.stringify 输出数据,这会在不知不觉中改变内容:像 12345678901234567890 这样的大整数会被舍入,1.50 会变成 1.5,而 "10" 这类数字键会跳到对象的最前面。本 JSON 格式化工具只调整空白字符,因此每个数字、转义序列和键都与你输入的完全一致。
- 格式化(美化):使用 2 个空格、4 个空格或制表符缩进。
- 压缩:删除所有空白字符,让体积降到最小。
- 键名排序:在每一层级按字母顺序排列对象的键,便于对比两个文件。
- 校验:严格的 JSON 解析器会报告第一个错误所在的确切行和列。
- 统计信息:大小、键的数量、对象和数组的数量以及嵌套深度。
“修复”功能可以解决哪些问题
从 JavaScript 代码、Python、日志或 AI 聊天回复中复制的 JSON 往往只是“差不多有效”。修复功能会将其转换为严格的 JSON:
| 问题 | 修复前 | 修复后 |
|---|---|---|
| 尾随逗号 | {"a": 1,} | {"a": 1} |
| 注释 | // note、/* … */ | 已删除 |
| 单引号 | {'a': 'b'} | {"a": "b"} |
| 键名未加引号 | {a: 1} | {"a": 1} |
| Python 值 | True、False、None | true、false、null |
| NaN、Infinity、undefined | {"x": NaN} | {"x": null} |
| 缺少逗号 | [1 2 3] | [1, 2, 3] |
| 括号未闭合 | {"a": [1, 2 | {"a": [1, 2]} |
| 多个值(JSON Lines) | {"a":1} {"a":2} | [{"a":1}, {"a":2}] |
在代码和命令行中格式化 JSON
- JavaScript:
JSON.stringify(data, null, 2) - Python:
json.dumps(data, indent=2),或在终端中运行python -m json.tool file.json - jq:
jq . file.json用于格式化,jq -c .用于压缩,jq -S .用于键名排序 - PHP:
json_encode($data, JSON_PRETTY_PRINT)
请注意,这些方法都会重新编码数据,因此非常大的数字可能会被舍入,而本页的格式化工具则不会。
为什么选择 JSON Format Online?
- 免费所有工具完全免费,不限次数,无需注册账号,也不会添加水印。
- 隐私安全所有处理均在您的浏览器本地完成。文件绝不会被上传。
- 快速页面轻量,在任何设备上都能瞬间加载。
- 随处可用支持 Windows、macOS、Linux、Android 和 iPhone。
常见问题
我的 JSON 会被上传到服务器吗?
不会。格式化、校验和修复完全在你的浏览器中运行。只有从 URL 加载时才会经由我们的服务器获取文件,因为浏览器会阻止大多数跨站直接下载;内容会直接传给你,不会被存储。
为什么 JSON 报错“Unexpected token”?
JSON 比 JavaScript 更严格:键和字符串必须使用双引号,不允许尾随逗号和注释,也不存在 NaN 或 undefined 这样的值。校验器会指出具体问题及其位置,修复功能则能自动解决其中的大部分错误。
格式化会改变数字或键的顺序吗?
不会。大整数、末尾的零、转义序列和键的顺序都会原样保留。只有键名排序会重新排列属性,即便如此,每个数字也会保留原有的数位。
JSON 文件最大可以有多大?
在现代桌面浏览器中,几十 MB 的文件也能正常处理。编辑器只为可见的行绘制行号,因此长文档依然流畅;即使错误位于大文件深处,也能被准确报告。