开发编码 本地计算 开箱即用 内置示例 不留痕迹

JSON 格式化器

粘贴 JSON 一键格式化(2/4 空格缩进)、压缩或校验,语法错误给出具体位置提示。输出按纯文本渲染,无代码注入风险,不依赖任何第三方库,全部在浏览器本地完成。

JSON 格式化把一行到底的接口返回、配置文件或日志展开成带缩进的层级结构,键值关系一眼看清;也支持反向操作,把格式化后的内容压回单行以减小体积。工具使用浏览器原生的 JSON.parse 与 JSON.stringify,不引入第三方库,结果按纯文本渲染,不会执行 JSON 里的内容。

常见用途有三类:接口联调时看清返回结构、提交配置前检查语法、排查 Unexpected token 这类报错。JSON 比 JavaScript 对象字面量严格:键必须用双引号、不能有尾随逗号、不支持注释与 undefined —— 多数报错都来自这几条差异。

使用步骤

  1. 把原始 JSON 粘贴到输入框,从接口文档复制的压缩 JSON 也可以。
  2. 选择缩进:2 空格适合阅读与提交审查,4 空格适合部分团队规范,然后点「格式化」。
  3. 若报错,按提示的行列号回到原文检查,常见原因是尾随逗号、单引号键名或写了注释。
  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 以上可能出现明显卡顿。处理超大文件建议先拆分,或改用支持流式解析的命令行工具。本工具在本地解析,不占网络带宽但受浏览器内存限制。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。