JSONC vs 原生JSON.stringify:压缩前后数据对比与效果实测

发布时间:2026/8/21 13:13:39
JSONC vs 原生JSON.stringify:压缩前后数据对比与效果实测 JSONC vs 原生JSON.stringify压缩前后数据对比与效果实测【免费下载链接】JSONCJSON compressor and decompressor项目地址: https://gitcode.com/gh_mirrors/json/JSONCJSONC 是一款专为前端打造的JSON 压缩与解压工具JSON compressor and decompressor而原生JSON.stringify则是浏览器内置的序列化方法。很多新手在做数据上报、接口传输时都习惯直接JSON.stringify一把梭结果数据体积大、传输慢、流量费还蹭蹭上涨。本文将通过项目内置的 Benchmark 实测数据直观对比JSONC 压缩与原生 JSON.stringify 在压缩前后的大小差异用数据告诉你为什么追求极致性能的团队都在用 JSONC。一、为什么 JSON.stringify 传输效率低原生 JSON.stringify 只是把对象转成字符串完全不压缩。更致命的是当数据通过 POST 提交或 GET 参数传递时浏览器会对字符串做 URL 编码而 URL 编码会进一步放大体积。实测数据Benchmark 表中 Obj1 备注显示直接发送 JSON.stringify 的结果到服务器因 URL 编码重量额外增加36.42%也就是说你本来要传 1MB 数据实际线上可能变成 1.36MB。处理方式发送字节数Obj1发送字节数Obj2相对最重方案的改进JSON.stringify原生27260265800%最重JSON.stringify Base6423113253834.5% ~ 15.21%JSONC.compress键名压缩约 16025约 127877.5% ~ 32.81%JSONC.packGzipBase6411569874357.56% ~ 67.11%数据来源项目自带 Benchmark 表格Obj1 原始大小 17331 字节Obj2 原始大小 19031 字节。二、JSONC 的两大压缩方案对比JSONC 提供两条压缩路线源码见 src/JSONC.js完整测试见 test/JSONC.js。方案一JSONC.compress —— 键名映射压缩原理是遍历 JSON 对象把所有重复出现的键名映射成极短的字符如A、B、C再把映射表存进对象的_字段。适合键名长、字段重复多的数据。data.js 实测原始 17331 字节 → 压缩后 16025 字节压缩率 7.5%data2.js 实测原始 19031 字节 → 压缩后 12787 字节压缩率 32.81%⚠️ 注意数据量很小时额外携带的映射表反而可能让体积变大请按场景选择。方案二JSONC.pack —— Gzip Base64 终极压缩在 compress 基础上再叠加 Gzip 压缩并用 Base64 编码规避 URL 编码膨胀是目前实测中体积最小、改进最大的方案。data.js原始 17331 字节 → 5715 字节总体压缩率 66.76%data2.js原始 19031 字节 → 4664 字节总体压缩率 75.49%结合 Benchmark 图片数据packGzipBase64在两种测试对象上的发送体积改进分别达到57.56%和67.11%大幅领先原生 JSON.stringify。三、最快上手4 个 API 搞定压缩与解压JSONC 的用法非常简单API 只有 4 个版本文件位于 versions/jsonc.js// 1. 压缩键名映射压缩 var compressed JSONC.compress(json); // 2. 解压还原原始对象 var restored JSONC.decompress(compressed); // 3. 压缩Gzip Base64适合传输 var packed JSONC.pack(json); // 4. 解压还原 Gzip 字符串为对象 var original JSONC.unpack(packed);想要先压缩再打包直接传第二个参数即可JSONC.pack(json, true)解压时对应JSONC.unpack(str, true)。四、服务端配套PHP 解压方案JSONC 还贴心地提供了 PHP 端的解压类 php/GzipJSON.php前端用 JSONC.pack 压缩后后端几行代码即可还原完整示例可参考 Benchmark/obj2/demo_pack_gzip_compress_with_base64/ 下的alo.php与index.php$gzjson new GzipJSON(); $json $gzjson-decompress($_POST[json]); echo json_encode($json);五、实测结论与选型建议小数据量直接 JSON.stringify 即可JSONC 的映射表可能帮倒忙。中等数据量几十 KB 以上JSONC.compress可稳定省下 7%~33% 的体积。大数据量或 POST 上报场景强烈推荐JSONC.pack(json, true)配合服务端 GzipJSON 解压最多可减少75% 的传输体积同时彻底规避 URL 编码膨胀问题。JSONC 以零依赖、纯前端实现的轻量方案为浏览器 → 服务器的数据传输提供了原生 JSON.stringify 无法比拟的压缩效率。如果你正在被接口带宽、移动端流量和传输速度困扰JSONC 值得立刻引入项目实测一把。【免费下载链接】JSONCJSON compressor and decompressor项目地址: https://gitcode.com/gh_mirrors/json/JSONC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考