功能说明
把一份 JSON 文档重写为最小合法形式:标记之间的每个空格、换行和缩进字符都会被移除。输入先经过解析,因此输出保证是携带相同数据的合法 JSON。非法输入会显示红色错误框,绝不会输出损坏的结果。输出头部有一个节省徽章,以字节为单位报告压缩前后的大小和节省的百分比(精确到一位小数)——移除了字节时显示绿色,输入本来就是紧凑形式时显示中性色。所有操作都在你的浏览器中本地运行。
使用方法
- 把 JSON 粘贴到左侧的JSON 输入框,或点击**试一试:**下方的 chip——Pretty config、Whitespace-heavy 或 Already minified——分别查看每种情况的压缩效果。Sample 载入一份演示文档;Clear 清空输入框。
- 压缩后的文档实时出现在右侧的压缩结果中,上方是节省徽章:
N bytes → M bytes · saved X%。 - 复制取走输出;下载把它保存为
minified.json(仅在输入是合法 JSON 时提供)。 - 复制分享链接把你的输入编码进 URL。打开那个链接会把输入原样放回工具中。
示例
点击 Sample:
78 bytes → 64 bytes · saved 17.9% — {"name":"CosmoDev","tools":["json-minify","base64"],"open":true}
Whitespace-heavy chip 同时展示两条规则——标记之间的填充消失了,字符串内部的空格原样保留:
{ "greeting" : "hello world" } → {"greeting":"hello world"}(完整 chip 文档为 67 bytes → 41 bytes · saved 38.8%)
一份已经压缩过的文档保持原样:
{"a":1,"b":[1,2]} (17 bytes) → {"a":1,"b":[1,2]} (17 bytes) · saved 0%
压缩也可能让文档变长,因为 JSON 数字格式在重新序列化时会被规范化:
{"a":1E3} (9 bytes) → {"a":1000} (10 bytes) · saved -11.1%
负数不是 bug;它是诚实的体积差。
JSON 压缩的原理
压缩只移除空白。它不缩短任何键、不丢弃任何数据、不重排任何顺序:解析输入,然后以零分隔字符把它序列化回去。这个操作是完全可逆的——把压缩后的文档重新格式化,就能恢复同样内容的可读形式。
由于逗号、冒号和括号已经划定了标记的边界,它们之间的每个空白字符都是可选的:
| Pretty | Minified | 移除的内容 |
|---|---|---|
{\n "a": 1\n} |
{"a":1} |
换行、缩进、: 后的空格 |
唯一的例外是引号字符串内部的空白:那是数据,原样保留。值里的一句话在压缩后保留它的空格。
压缩后的载荷在任何字节被反复计数的地方都很重要:浏览器拉取的配置文件、大规模服务的 API 响应、嵌入 URL 或单行 script 标签的 JSON,以及换行会破坏 shell 引用的命令行单行命令。
补充说明
- 私密: 解析和序列化都在本地运行;任何内容都不会被发送到别处。
- 等价于
JSON.stringify(JSON.parse(input))。 - 注意符号: 节省为 0 或负数意味着输入本来就是紧凑的。输出仍然是规范形式。
- 分享链接把完整输入带在 URL 里——非常大的文档会产生非常长的链接。
- 相关工具: JSON Formatter、JSON Validator、JSON ↔ CSV Converter。