什么是 MessagePack?
MessagePack 是一种高效的二进制序列化格式。它类似于 JSON,但更小、更快。其设计目标是在保持易用性的同时,最小化数据体积并提升编码/解码速度。
- ✅ 更小:相比 JSON,msgpack 通常能减少 50% 以上的数据大小。
- ✅ 更快:二进制解析比文本解析更高效。
- ✅ 跨语言支持:支持多种编程语言(Python、Java、Go、JavaScript 等),适合微服务间通信。
在 Python 中,我们通过 msgpack 第三方库来使用这一功能。
安装 msgpack
在使用前,需要先安装 msgpack 库:
pip install msgpack
注意:不要混淆
msgpack和msgpack-python(旧版本)。现在推荐直接使用msgpack。
基本用法
1. 序列化(打包)
使用 msgpack.packb() 将 Python 对象序列化为二进制数据:
import msgpack
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "CS"],
"scores": {"math": 95, "cs": 98}
}
# 序列化为二进制
packed_data = msgpack.packb(data)
print(packed_data) # 输出:b'\x85\xa4name\xa5Alice...'
2. 反序列化(解包)
使用 msgpack.unpackb() 将二进制数据还原为 Python 对象:
unpacked_data = msgpack.unpackb(packed_data, raw=False)
print(unpacked_data) # 输出:{'name': 'Alice', 'age': 30, ...}
⚠️ 注意:
raw=False表示将字符串解码为 Pythonstr类型(默认为bytes)。
支持的数据类型
Msgpack 支持常见的 Python 数据类型:


