MessagePack

MessagePack 是一种高效的二进制序列化格式。

它可以像 JSON 一样在多种语言之间交换数据。

但它更快且更小。

小整数被编码成一个字节,典型的短字符串只需要一个额外的字节来存储字符串本身。

特性

  • 支持语言丰富

压缩比例

原始大小为 27 byte

  [json]
1
{"compact":true,"schema":0}

压缩后:

18 bytes 67 %

  [plaintext]
1
82 a7 63 6f 6d 70 61 63 74 c3 a6 73 63 68 65 6d 61 00

快速开始

maven 引入

  [xml]
1
2
3
4
5
<dependency> <groupId>org.msgpack</groupId> <artifactId>msgpack-core</artifactId> <version>0.8.22</version> </dependency>

代码案例

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Create serialize objects. List<String> src = new ArrayList<String>(); src.add("msgpack"); src.add("kumofs"); src.add("viver"); MessagePack msgpack = new MessagePack(); // Serialize byte[] raw = msgpack.write(src); // Deserialize directly using a template List<String> dst1 = msgpack.read(raw, Templates.tList(Templates.TString)); System.out.println(dst1.get(0)); System.out.println(dst1.get(1)); System.out.println(dst1.get(2)); // Or, Deserialze to Value then convert type. Value dynamic = msgpack.read(raw); List<String> dst2 = new Converter(dynamic) .read(Templates.tList(Templates.TString)); System.out.println(dst2.get(0)); System.out.println(dst2.get(1)); System.out.println(dst2.get(2));

json 系列

字符串

DSL-JSON 最快的 java 实现

Ali-FastJson

Google-Gson

Jackson

二进制

Google protocol buffer

Apache Thrift

Hession

Kryo

Fst

Messagepack

Jboss Marshaling

其他

JsonPath

JsonIter