编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 格式化 / JSON压缩

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去空格”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

JSON 压缩会改变数据内容吗?
不会。压缩只删除 token 之间无意义的空白和换行,键、值、顺序和数值精度都保持不变,字符串内部的空格也原样保留,压出来的和原来是等价的 JSON。
这里的压缩和 gzip 是一回事吗?
不是。这里是 minify,只去掉空白字符,结果仍是可读的文本 JSON;gzip 是二进制熵压缩。实际项目里通常先 minify 再由服务器 gzip,两者叠加体积最小。
字符串里的空格和换行会被删掉吗?
不会。压缩只处理结构性字符之间的空白,字符串字面量内部的内容(包括空格、\n、\t 转义)完全保留,否则就改变数据本身了。
为什么我的 JSON 压缩时报错?
多半是内容不符合标准 JSON:用了单引号、带尾逗号、写了注释,或者键没加引号。工具走的是完整解析,非法语法会直接失败,改成合法 JSON 即可。
粘贴的数据安全吗,会上传吗?
不会上传。压缩在你浏览器本地完成,数据不发往任何服务器,可以放心处理内部接口返回或含敏感字段的 JSON。

相关工具

查看全部「格式化」工具 →

相关名词解释