← 返回博客

如何压缩 JSON 减小传输体积

2026-04-08 · 5 分钟阅读

什么是 JSON 压缩(Minify)?

JSON 压缩(Minify)是指去除 JSON 字符串中所有不必要的空白字符(空格、换行符、制表符),将格式化的多行 JSON 转换为单行紧凑字符串,从而减小数据体积。压缩不改变 JSON 的任何数据内容,语义完全等价。

格式化 JSON 的可读性优先,适合人工阅读和编辑;压缩 JSON 的传输效率优先,适合程序间的数据交换和 API 响应。在生产环境的 API 中,通常应发送压缩 JSON,节省带宽和加快响应速度。

压缩能节省多少空间?

节省量取决于 JSON 的结构复杂性和原始格式化程度。一般而言:格式化 JSON(2 空格缩进)压缩后通常节省 20-40% 的字节;格式化 JSON(4 空格缩进)压缩后通常节省 30-50%;字段名短、值为数字的紧凑数据,节省比例相对较小;嵌套深、格式整齐的数据,节省比例更大。

压缩后的 JSON 通常还可以进一步用 gzip 或 brotli 压缩传输(HTTP 响应的 Content-Encoding),两者结合可以比原始格式化 JSON 小 70-90%。

代码中压缩 JSON

// JavaScript
const minified = JSON.stringify(JSON.parse(prettyJson));
// 或 / or
const minified = JSON.stringify(obj); // 默认输出即为压缩格式

# Python
import json
minified = json.dumps(data, separators=(',', ':'))
# separators=(',', ':') 去除冒号和逗号后的空格

// Go
import "encoding/json"
b, _ := json.Marshal(data)  // 默认输出压缩 JSON
string(b)

// 命令行 jq
echo '{"a": 1, "b": 2}' | jq -c .
# -c 参数表示 compact (压缩) 输出

何时应该压缩 JSON?

应该压缩 JSON 的场景:生产环境 API 响应(减少带宽消耗);前端打包中的 JSON 数据文件(如国际化翻译文件、配置数据);嵌入到 HTML 或 JavaScript 中的 JSON 数据;存储到数据库或缓存系统的 JSON 字符串。

不应该压缩的场景:配置文件(需要人工编辑和阅读);版本控制系统中的 JSON 文件(格式化 JSON 的 diff 更清晰,便于代码审查);日志中的 JSON(格式化更易于排查问题)。

gzip 压缩:比 JSON 压缩更高效

单纯的 JSON 压缩(去除空白)通常节省 20-50%,而 HTTP 传输层的 gzip 压缩通常能再节省 60-80%(在已压缩 JSON 的基础上)。两者结合的效果最好,但如果只能选一个,gzip 压缩的效益更高。

现代 Web 框架默认开启 gzip/brotli 压缩,因此对于 API 响应,开启服务端压缩通常比手动压缩 JSON 更重要。当然,先压缩 JSON 再 gzip,两者叠加效果最佳。

键名缩短:更激进的体积优化

在某些对性能极度敏感的场景(如 IoT 设备、实时游戏),可以考虑将 JSON 键名缩短来进一步减小体积。例如:{"temperature": 25.5, "humidity": 68} 可以缩短为 {"t": 25.5, "h": 68},数据含义不变但体积更小。

这种方式会严重降低可读性,需要维护键名映射文档,建议只在有明确性能需求时才采用。对于大多数应用,标准的 JSON 压缩 + gzip 已经足够高效。

在线 JSON 压缩工具的使用

在线 JSON 格式化工具通常同时提供"格式化"和"压缩"两个功能。使用步骤:粘贴格式化的 JSON 到输入框;选择"压缩"或"Minify"功能;工具会输出去除所有空白字符后的单行 JSON;复制结果并使用。

压缩操作是完全可逆的——任何时候都可以将压缩 JSON 粘贴到格式化工具中还原为可读格式。建议始终保留一份格式化版本作为"源",将压缩版本作为"发布"版本。

立即免费使用相关工具

免费使用 →