# 0. 理解结构 ====
JSON, 40字节 UTF-8
----------------------------------------------
| {"name":"John Doe","age":12} |
----------------------------------------------
| {" | 7B 22 |
| name | 6E 61 6D 65 |
| ":" | 22 3A 22 |
| John Doe | 4A 6F 68 6E 20 44 6F 65 |
| "," | 22 2C 22 |
| age | 61 67 65 |
| ": | 22 3A 20 |
| 12 | 31 32 |
| } | 7D |
----------------------------------------------
MessagePack, 27字节 UTF-8
----------------------------------------------
| ‚¤name¨John Doe£age.12 |
----------------------------------------------
| ‚¤ | 82 84 |
| name | 6E 61 6D 65 |
| ¨ | A8 |
| John Doe | 4A 6F 68 6E 20 44 6F 65 |
| £ | A3 |
| age | 61 67 65 |
| . | 0C |
| 12 | 31 32 |
----------------------------------------------
# 1. JAVA上使用MessagePack ====
""" Maven依赖
"""
<dependencies>
...
<dependency>
<groupId>org.msgpack</groupId>
<artifactId>msgpack</artifactId>
<version>${msgpack.version}</version>
</dependency>
...
</dependencies>
""" 简单进行序列化
"""
// Create serialize objects.
List<String> src = new ArrayList<String>();
src.add("msgpack");
src.add("kumofs");
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));
// 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));
复制代码
MessagePack vs JSON
最新推荐文章于 2023-04-14 14:26:37 发布