什么是 JSON 压缩?
JSON(JavaScript Object Notation)是一种由 RFC 8259 与 ECMA-404 定义的轻量级文本数据交换格式。压缩会剔除所有出现在字符串字面量之外的空格、制表符与换行——所有的值都按字节保留,只有装饰性的空白被去除。压缩后的输出解析得到与原输入完全相同的值。
JSON 压缩是如何工作的?
你的输入完全在浏览器中使用内置的 JSON.parse 与 JSON.stringify 函数处理。主要步骤如下:
- 从文本框中逐字读取你粘贴的输入——每一个字节都保存在本地内存中。
- 浏览器使用
JSON.parse解析它。若输入不是合法的 JSON,解析器会抛出一个SyntaxError,被捕获后原样呈现给你——你的文本永远不会离开本页面。 - 解析成功后,解析得到的值会以不传缩进参数的
JSON.stringify(value)重新序列化,生成该值最短的合法形式。 - 原文本与压缩文本的字节长度通过
new TextEncoder().encode(...).byteLength计算——这正是 HTTP 服务器在线路上看到的 UTF-8 字节数。 - 结果写入只读文本框,指标条以百分比形式展示节省的字节,下载按钮则把结果打包成可发布的
.min.json文件。
为什么使用此工具压缩 JSON?
- 隐私:每一次解析、压缩与统计都在你的浏览器中进行。JSON 永远不会到达我们的服务器——不上传、不埋点、不需要账号。
- 真实的字节数据:原始大小、压缩后大小与节省量都由 TextEncoder 计算得出,你看到的就是 CDN 或 API 网关实际会计费的 UTF-8 字节差。
- 零数据损失:压缩仅去除装饰性空白——所有值都还原为同一棵 JSON 树,对于生产环境的负载、清单文件与内嵌测试数据都是安全的。
- 速度快:纯粹的
JSON.parse+JSON.stringify即可瞬时处理常见的剪贴板级负载,无需加载任何外部库。
JSON 压缩有哪些常见应用?
去除 JSON 中无意义的空白在 Web 开发、数据工程与嵌入式系统中都很常见:
- API 负载瘦身:在请求与响应跨越计费 API 网关、付费出网链路或卫星链路之前缩小其体积。
- 嵌入 HTML:把 JSON 数据塞进
data-*属性或<script type="application/json">标签中,避免美化输出的空白漏到渲染后的页面里。 - 更小的 localStorage:用压缩后的 JSON 而非美化版本写入 localStorage / IndexedDB,这在移动浏览器严格的同源存储配额下尤为有用。
JSON 压缩示例是什么样的?
粘贴一份大约 1.2 KB 的美化配置文件(两空格缩进约 1,225 字节)并按下 压缩,通常可压缩到 0.4 KB 以内——节省约 66%——同时所有键和值都被原样保留。下载得到的 output.min.json 与一个没有任何格式化中间件、并以 Content-Type: application/json 输出的 HTTP 服务器所发出的内容字节相同。
它真的在我的浏览器里运行吗?
是的。压缩流水线就是浏览器标签页中运行的纯 JSON.parse + JSON.stringify。不上传、不通过 Service Worker 代理,压缩本身完全不会触发任何网络请求。唯一的出站流量是常规的页面资源(CSS、字体、统计)——你的 JSON 永远不会到达 Ultim8Soft。
为什么要压缩 JSON?
压缩后的 JSON 解析得到与美化版完全相同的值,但在传输与存储上都更小。更小的负载意味着更低的 CDN 出网账单、更快的移动端下载、更少的 Service Worker 内存占用,以及能更紧凑地塞进 JWT、HTML data-* 属性与 localStorage 这些定长信封中。对于高频 API,字节节省会叠加——每天 1 GB 流量的端点若节省 30%,每月可省下约 9 GB。
压缩会丢失数据吗?
不会。JSON 压缩只去除位于字符串字面量 之外 的空白——空格、制表符与换行——规范本身就把它们归类为无意义字符。每一个键、值、数字、转义序列与字符串中的字符都按字节保留。压缩后的输出可以解析为与原输入 deepEqual 的值。消失的只是装饰性缩进。
格式化工具和压缩工具有什么区别?
配套的 JSON 格式化工具方向相反:它扩展空白,让人类能够阅读嵌套结构。压缩器则把这些空白再剥回去,用于传输与存储。这两个工具互为逆操作——把一份 JSON 文档先用格式化器再用压缩器走一遍,得到的字节串与你最初喂给压缩器的完全一致,因为两者操作的都是解析后的值,而非装饰性的标记。
本 JSON 压缩工具使用的就是 Node.js、Deno 与浏览器运行时所用的同一套解析器,输出与一个朴素 HTTP 服务器发出的字节完全一致。把任何 JSON 粘贴到上方,复制结果,或下载为 .min.json。