什么是 JSON 压缩?
压缩 JSON 就是删除所有不在字符串内的空白:缩进、换行以及冒号和逗号后面的空格。结果只有一行,任何 JSON 解析器读取后得到的数据都与原文完全相同。RFC 8259 中的 JSON 语法允许在每个结构字符周围出现空白,但空白没有任何含义,因此这种转换是安全且可逆的:随时可以用 JSON 格式化工具把输出重新美化。
如何压缩 JSON
- 粘贴 JSON或打开文件,输入时会自动校验。
- 可选:勾选“键排序”,得到与键顺序无关的规范形式。
- 点击“压缩”。右侧会显示单行结果,以及原始大小、压缩后大小和节省的百分比。
- 复制或下载结果。
示例
{
"id": 42,
"tags": [ "a", "b" ],
"note": "two spaces stay"
}
压缩后为 {"id":42,"tags":["a","b"],"note":"two spaces stay"}。字符串里的两个空格会保留,因为它们是值的一部分。
什么时候值得压缩
- 放在 URL、请求头或 Cookie 中的数据:每个字节都很宝贵,而且没有压缩。
- 嵌入 HTML 的 JSON:例如 JSON-LD 结构化数据或应用的初始状态。
- 存储:数据库中的 JSON 列、缓存条目和消息队列。
- 测试数据和快照:希望每条记录占一行时。
对于通过 HTTP 并启用 gzip 或 Brotli 传输的响应,压缩 JSON 的收益较小,因为压缩算法已经去掉了大部分重复的空白。不过在构建步骤中顺手做一下,成本也很低。
为什么要先校验再压缩?
只用正则表达式删除空白的压缩工具,会把错误的 JSON 变成一行错误的 JSON,调试起来更难。本工具会先解析输入。如果输入不合法,会按原始的易读排版列出问题和行号;只有文档正确时才会生成压缩结果。数字按原样复制,因此超出 JavaScript 精度的值(如 12345678901234567890)不会被四舍五入。