MessagePack

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

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

但它更快且更小。

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

特性

  • 支持语言丰富

压缩比例

原始大小为 27 byte

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

压缩后:

18 bytes 67 %

82 a7 63 6f 6d 70 61 63 74 c3 a6 73 63 68 65 6d 61 00

快速开始

maven 引入

<dependency>
    <groupId>org.msgpack</groupId>
    <artifactId>msgpack-core</artifactId>
    <version>0.8.22</version>
</dependency>

代码案例

// 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