返回首页
最新
嗨,HN,
我创建了一种名为 SJT(结构化 JSON 表)的实验性格式,以优化 API 中的数据传输。这个想法很简单:SJT 将结构(表头)与值分开,而不是在每一行中重复对象键。这使得数据更加紧凑,也更易于流式传输。
例如,使用 Discord 的 /messages 端点:
原始 JSON 负载:约 50,110 字节
使用 SJT 编码的相同数据:约 26,494 字节
因此,您可以获得约 50% 的大小减少,同时仍然能够逐条解码(记录逐条)。令人惊讶的是,解码的速度甚至可能比普通 JSON 更快,因为字符串解析的开销更小。
快速基准测试:
| 格式 | 大小 (KB) | 编码时间 | 解码时间 |
| ------------ | --------- | ----------- | ----------- |
| JSON | 3849.34 | 41.81 ms | 51.86 ms |
| JSON + Gzip | 379.67 | 55.66 ms | 39.61 ms |
| MessagePack | 2858.83 | 51.66 ms | 74.53 ms |
| SJT (json) | 2433.38 | 36.76 ms | 42.13 ms |
| SJT + Gzip | 359.00 | 69.59 ms | 46.82 ms |
测试条件:
数据集:合成的表格数据集,包含 50,000 条记录,具有混合的基本字段、嵌套数组和嵌套对象(代表大型 REST API 负载)。
运行环境:Node.js 20(V8 引擎)。
实现语言:JavaScript(通过 sjt.js)。
大小 (KB):未压缩的大小,以千字节为单位(对二进制格式的估算)。
编码/解码 (ms):序列化/反序列化整个数据集的平均时间(毫秒)。
规格: [https://github.com/SJTF/SJT](https://github.com/SJTF/SJT)
JS 实现:[https://github.com/yukiakai212/SJT.js](https://github.com/yukiakai212/SJT.js)
希望听到曾与 JSON 重型 API、流式传输或紧凑数据格式(如 CSV、Parquet 等)打过交道的人的反馈。