关于JSON压缩
接口响应、配置文件和测试数据里的 JSON,缩进与换行通常占到体积的 15% 到 30%,一份 100 KB 的美化 JSON 压完往往只剩 70 KB 上下。这个工具做的是剥离无意义空白:对象与数组括号内、逗号后、冒号后的空格与换行全部删掉,但字符串字面量内部的空格与转义换行原样保留,不会把 “hello world” 变成 “helloworld”。压缩前会先做一次语法校验,输入不合法时直接报错,而不是输出一份半截内容。常见用法是把配置或字典压成一行塞进代码、环境变量与 URL 参数里。
JSON压缩怎么用
- 把美化过的 JSON 全文粘贴进输入框,包含多行缩进的原文不用做任何预处理。
- 确认校验通过,语法不合法时工具会先报错,压缩不会执行,先修语法。
- 对照压缩前后的文本,确认空白已移除而键值顺序与内容未发生变化。
- 复制输出的单行 JSON,粘进代码常量、配置文件字段或接口请求参数里。
- 如果体积还嫌大,对结果再做一次 gzip 或 Brotli 传输压缩,两者叠加不冲突。
使用提示
- 压缩只删空白,不等同于 gzip:HTTP 传输时再开 Accept-Encoding: gzip,压缩后体积通常还能再小 60% 到 80%。
- 字符串里的空格、转义换行 \n 与 Unicode 转义都会原样保留,所以压缩后跑一遍单元测试通常不需要改断言。
- 跨语言传递大整数 ID 要小心:JSON 数字在 JavaScript 与 PHP 上都有精度或溢出问题,压缩不会让情况变好,改用字符串更稳。
JSON压缩常见问题
JSON 压缩后体积大概能减多少?
取决于缩进层级,一般在 15% 到 30% 之间。嵌套越深、字段名越短,减重比例越低,因为字段名本身也要占字节,压不掉。想继续减只能靠 gzip、精简字段名或改用更紧凑的二进制格式。
压缩会不会改变 JSON 的内容?
不会。只移除括号内、逗号后与冒号后的非语义空白,字符串字面量内部原样保留,键值、数据类型和顺序都不变。所以压缩前后用任意标准解析器读出来的对象完全等价,可以直接对拍校验。
压缩后的 JSON 能直接放在 URL 里吗?
能,但必须再做一次 URL 编码(encodeURIComponent),因为花括号、引号和冒号在查询串里是保留字符。还要注意长度限制:浏览器约 2000 字符、服务端各不相同,长 JSON 用 POST 请求体传递更稳妥。
为什么要把 JSON 压成一行再传?
HTTP 传的是字节流,JSON 只有序列化成文本才能发送,而缩进换行是给人读的、机器不需要。压成一行能省带宽、减少解析前的 IO 开销,对移动网络和高频接口的效果最明显。