JSON压缩
把 JSON 压成一行。
这个工具能做什么
JSON 压缩做的事情很直接:把带缩进、换行、对齐空格的 JSON 文本,去掉所有无意义的空白,重新拼成没有多余字符的一行。开发时我们习惯用格式化(pretty-print)的 JSON 看结构,缩进两格、每个键值对单独一行,读起来清楚;但这些空白对机器解析毫无意义,白白占体积。当你要把一段配置塞进源码、写进接口 mock,或者存进数据库字段时,一行紧凑的 JSON 更省空间也更整洁。这个工具就是把 json 压缩成一行、json 去空格的过程自动化,粘贴进来点一下就得到 minify 后的结果。
按 RFC 8259 的定义,JSON 的结构性字符(花括号、方括号、冒号、逗号)之间允许出现空白(space、tab、\n、\r),这些空白是不重要的(insignificant),删掉不影响解析结果。压缩的本质就是把位于 token 之间的这些空白全部去掉,同时严格保留字符串字面量内部的一切内容。可靠的做法不是用正则粗暴替换空格,而是先 JSON.parse 解析成对象、再 JSON.stringify 不带缩进参数序列化回来——这样既完成了 minify,又顺带做了一次语法校验和规范化。也正因为走了完整解析,字符串里的空格、\n 转义、\uXXXX 转义和 UTF-8 字符都会被原样保留,不会误伤。
最常见的场景就是把体积做小。比如接口返回的 JSON 在调试面板里是格式化展示的,你想把它当测试数据贴进单元测试或前端 mock,直接压成一行既省行数又不打乱代码缩进。再比如往 localStorage、URL 参数或数据库 text 字段里写 JSON,紧凑的一行格式能明显减少字节数,键值多的对象压缩率往往能到三四成。还有把一段 npm 配置、CI 配置或 Nginx 里的 JSON 片段压紧后单行嵌入,能省去多行文本在 shell 或 YAML 里逐行转义的麻烦。
要区分两个压缩:这里说的是 minify,只删空白、不改语义,压出来的仍是合法且能读的 JSON;它和 gzip、deflate 那种基于熵编码的二进制压缩是两回事,真正的传输体积优化通常是 minify 之后再让服务器开 gzip。另外,压缩不改变键的顺序、不动数值精度、也不会把 Unicode 转成别的形式。需要注意标准 JSON 不接受单引号、尾逗号(trailing comma)和注释,如果你粘进来的是 JSON5 或 JS 对象字面量,解析会报错,得先改成合法 JSON 再压。
JSON压缩是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“json压缩”、“json压缩成一行”、“json去空格”,说的都是这个。
常见使用场景
- 把格式化的配置 JSON 压成一行嵌进源码
- 压缩接口返回体减小网络传输体积
- 精简存进 localStorage 的 JSON 数据
- 把调试面板里的 JSON 压紧贴进单元测试
- 压缩后再交给服务器 gzip 更省带宽
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。