JSON 格式化器
粘贴 JSON 一键格式化(2/4 空格缩进)、压缩或校验,语法错误给出具体位置提示。输出按纯文本渲染,无代码注入风险,不依赖任何第三方库,全部在浏览器本地完成。
JSON 格式化把一行到底的接口返回、配置文件或日志展开成带缩进的层级结构,键值关系一眼看清;也支持反向操作,把格式化后的内容压回单行以减小体积。工具使用浏览器原生的 JSON.parse 与 JSON.stringify,不引入第三方库,结果按纯文本渲染,不会执行 JSON 里的内容。
常见用途有三类:接口联调时看清返回结构、提交配置前检查语法、排查 Unexpected token 这类报错。JSON 比 JavaScript 对象字面量严格:键必须用双引号、不能有尾随逗号、不支持注释与 undefined —— 多数报错都来自这几条差异。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 把原始 JSON 粘贴到输入框,从接口文档复制的压缩 JSON 也可以。
- 选择缩进:2 空格适合阅读与提交审查,4 空格适合部分团队规范,然后点「格式化」。
- 若报错,按提示的行列号回到原文检查,常见原因是尾随逗号、单引号键名或写了注释。
- 需要更小体积时点「压缩」得到单行 JSON,结果可用复制按钮带走。
计算原理与示例
格式化规则
格式化使用 JSON.stringify(obj, null, 2) 以 2 空格缩进输出,键名与值之间带空格,数组与对象逐行展开,可直接阅读或提交配置审查。
压缩规则
压缩会移除所有可移除的空白(键值间空格、换行、缩进),输出单行最小体积 JSON,适合接口传输或写入缓存。
语法错误怎样定位
错误定位原理:JSON.parse 抛错时解析浏览器错误消息中的位置信息换算为行列。受浏览器内核限制,部分多行错误只能提示语法错误类型而无法给出精确行列。
代码示例
JavaScript 在浏览器里格式化与压缩
// 格式化:第 3 个参数是缩进宽度
const pretty = JSON.stringify(JSON.parse(raw), null, 2);
// 压缩回单行(体积最小)
const minified = JSON.stringify(JSON.parse(raw));
Shell 用 jq 做同样的事
# 格式化
jq . data.json
# 压缩
jq -c . data.json
# 只看某个字段
jq ".data.list[0].name" data.json
常见问题
JSON 与 JavaScript 对象有什么区别?
JSON 是纯文本数据格式:键必须双引号、值只能是字符串/数字/布尔/null/数组/对象,不允许注释、单引号、末尾逗号、函数。JavaScript 对象字面量则宽松得多。本工具按严格 JSON 标准校验。
JSON 末尾逗号合法吗?
不合法。{"a":1,} 在标准 JSON 中是语法错误(很多语言的解析器如 JSON.parse 都会拒绝)。有些配置格式如 JSON5、JSONC 允许尾逗号和注释,但那不是标准 JSON。
输出的 JSON 会被上传吗?
不会。格式化、压缩、校验全部在浏览器里用原生 JSON.parse/stringify 完成,内容不经过任何服务器,断网可用,可以放心粘贴含敏感信息的接口返回与配置文件。
JSON 支持注释吗?
标准 JSON 不支持注释,写双斜线或块注释都会导致校验失败。需要注释时可改用 JSON5、JSONC 或 YAML,或把说明写进单独的字段(如 _comment)。某些配置文件能带注释是工具层的扩展,并非 JSON 标准。
JSON 的数据类型有哪些?
标准类型共六种:字符串、数字、布尔值(true / false)、null、数组和对象。字符串必须用双引号;数字不能带前导零;函数、undefined、日期对象都不是合法的 JSON 值。
格式化后能压缩回一行吗?
可以。格式化只是加上缩进和换行以便阅读,压缩则去掉所有多余空白,两者的数据内容完全一致。传输和存储用压缩版更省空间,调试和评审用格式化版更易读,可按需切换。
JSON 文件太大浏览器会卡吗?
会。JSON.parse 是同步操作,几百 KB 通常没问题,几 MB 以上可能出现明显卡顿。处理超大文件建议先拆分,或改用支持流式解析的命令行工具。本工具在本地解析,不占网络带宽但受浏览器内存限制。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。