Go工具集

MsgPack,类似于JSON,但更快更轻

原理讲解

试试 81a161cb3ff0000000000000

以{'compact':true,'schema':0}为例,本身占27字节,压缩完只需要18字节。

MessagePack 是一种高效的二进制序列化格式。它可以让你像使用 JSON 一样在多种语言之间交换数据。但它更快且占用空间更小。小整数被编码为单个字节,典型的短字符串除了字符串本身之外只需要一个额外的字节。

{"compact":true,"schema":0}

从上面例子来看,本身占27字节,压缩完只需要18字节。

MsgPack兼顾了可读性和性能,不过一些内容编码后不可读,需要进行Hex编码或者Base64编码,本工具使用Hex编码,详细请查看Hex编码

MsgPack官网

MsgPack、JSON、XML横向对比

对比项目 Msgpack JSON XML
数据格式 二进制格式 文本格式 文本格式
数据大小 通常较小 一般 通常较大
编码效率 较高
可读性 低(二进制难直接阅读) 高(人类可读) 高(人类可读,但较复杂)
语言支持 多种编程语言支持良好 广泛支持多种编程语言 广泛支持多种编程语言
扩展性 较好,可灵活定义结构 较好,可通过对象和数组扩展 非常好,具有丰富的扩展性和自定义标签
适用场景 对数据大小和效率要求高的场景,如内部通信、存储紧凑数据等 数据交换、API 通信等 复杂的文档结构、配置文件、数据存储等
解析速度 较快 相对较慢
复杂性 相对简单 简单 较复杂
Web Analytics Made Easy - Statcounter