MessagePack 是一种高效的二进制序列化格式。它可以让你像使用 JSON 一样在多种语言之间交换数据。但它更快且占用空间更小。小整数被编码为单个字节,典型的短字符串除了字符串本身之外只需要一个额外的字节。
{"compact":true,"schema":0}
从上面例子来看,本身占27字节,压缩完只需要18字节。
MsgPack兼顾了可读性和性能,不过一些内容编码后不可读,需要进行十六进制编码或者Base64编码。
对比项目 | Msgpack | JSON | XML |
---|---|---|---|
数据格式 | 二进制格式 | 文本格式 | 文本格式 |
数据大小 | 通常较小 | 一般 | 通常较大 |
编码效率 | 高 | 较高 | 低 |
可读性 | 低(二进制难直接阅读) | 高(人类可读) | 高(人类可读,但较复杂) |
语言支持 | 多种编程语言支持良好 | 广泛支持多种编程语言 | 广泛支持多种编程语言 |
扩展性 | 较好,可灵活定义结构 | 较好,可通过对象和数组扩展 | 非常好,具有丰富的扩展性和自定义标签 |
适用场景 | 对数据大小和效率要求高的场景,如内部通信、存储紧凑数据等 | 数据交换、API 通信等 | 复杂的文档结构、配置文件、数据存储等 |
解析速度 | 快 | 较快 | 相对较慢 |
复杂性 | 相对简单 | 简单 | 较复杂 |