最近想找个二进制序列化框架把对象存起来或者放到缓存里,首先排除了protobuf和thrift, 因为这两个都要写数据定义文件太烦,后来发现msgpack好像很不错的样子,决定试试
1.材料
msgpack-0.6.12.jar
2.先定义两个对象
package test.magpack; import org.msgpack.annotation.Message; @Message public class Message2 { public Message2(){ } public Message2(String name){ this.name = name; } public String name; }
package test.magpack; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.msgpack.annotation.Message; @Message // Annotation public class MyMessage { public String name; public double version; public List<String> list = new ArrayList<String>(); public Map<String, String> map = new HashMap<String, String>(); public List<Message2> list2 = new ArrayList<Message2>(); public Map<String, Message2> map2 = new HashMap<String, Message2>(); public Message2 message; }
3. 测试序列化与反序列化对象
public static void main(String[] args) throws IOException { System.setProperty("msgpack.dynamic-codegen.enabled", "false"); MyMessage src = new MyMessage(); src.name = "msgpack"; src.version = 0.6; src.list.add("1111"); src.list.add("2222"); src.map.put("a", "aaaa"); src.map.put("b", "bbbb"); src.message = new Message2("============="); src.list2.add(new Message2("sssss")); src.list2.add(new Message2("ffffff")); src.map2.put("aa", new Message2("xxxx")); src.map2.put("bb", new Message2("zzzz")); MessagePack msgpack = new MessagePack(); // Serialize byte[] bytes = msgpack.write(src); System.out.println(bytes.length); // Deserialize MyMessage dst = msgpack.read(bytes, MyMessage.class); System.out.println(dst.name); System.out.println(dst.version); System.out.println(dst.list); System.out.println(dst.map); System.out.println(dst.message.name); System.out.println(dst.list2); System.out.println(dst.map2); }
这个java的msgpack实现对 对象的嵌套和泛型,list, map都支持, 很好用
相关推荐
**序列化与反序列化** 序列化是将对象转换为可存储或可传输的形式的过程,而反序列化则是将这种形式的数据恢复为原来的对象。MsgPack库通过高效地编码和解码数据结构,实现了快速的序列化和反序列化。这在处理大量...
在Swift中,使用MsgPack进行序列化和反序列化能够提高应用性能,因为与JSON等文本格式相比,二进制格式通常占用更少的空间,处理速度更快。 MsgPack的核心概念包括基本类型(如整数、浮点数、布尔值和字符串)以及...
反序列化失败的原因是由于 msgpack 序列化的特性之一:无法改变字段顺序。在 JSF 调用中,父 VO 增加了一个新的字段,这导致了序列化的对象顺序改变。msgpack 序列化结果只有 value,并且 value 进行了专属映射。 ...
在“第二节序列化和反序列化技术的原理与选型.docx”中,你可能找到关于各种序列化技术的比较,如protobuf、msgpack、JSON、XML等,以及它们各自的优缺点。而“【笔记】序列化和反序列化.docx”可能包含作者对学习...
在网络游戏开发中,数据的序列化与反序列化是至关重要的技术环节,它们涉及到游戏状态的存储、网络传输以及跨平台兼容性等多个方面。本文将深入探讨这些概念,并结合提供的"网络游戏-游戏数据的序列化与反序列化处理...
对象的序列化与反序列化是计算机编程中的关键概念,特别是在数据存储、网络传输和状态持久化等场景中。这两个过程对于理解数据处理流程至关重要。 序列化是指将一个对象的状态转换为可存储或可传输的形式,通常是...
消息序列化与反序列化是IT领域中一个关键的概念,特别是在分布式系统、网络通信和数据存储中。这个过程涉及到将对象或数据结构转换为可传输的格式,然后在接收端还原为原来的对象或数据结构。这允许不同系统之间有效...
消息包msgpack序列化器和反序列化器概要 package msgpack_testimport ( "fmt" "time" msgpack "github.com/lestrrat-go/msgpack" "github.com/pkg/errors")type EventTime struct { time. Time}func init () { if ...
MsgPacketizer 基于的序列化器/解串器+打包用于Arduino等特征单行序列化/反序列化或发布/订阅+打包+健壮的发送/接收序列化器/解串器几乎支持所有与相同的标准C ++类型支持自定义类序列化/反序列化基于序列化器/解串...
它是orjson的 fork/reboot 它的序列化速度比msgpack-python快,反序列化速度稍慢(现在)。它支持的序列化:数据类,日期时间,numpy的,pydantic和UUID实例本身。与其他 Python msgpack 库相比,它的特点和缺点:本...
node-msgpack, 面向NodeJS的空间高效对象序列化库 node-msgpack 是 NodeJS插件的插件,提供使用 MessagePack插件库序列化和序列化JavaScript对象的API 。 原生 JSON 对象相比,这里插件的性能并不太差,序列化数据所...
它包含了Python到msgpack和msgpack到Python的转换功能,包括序列化Python对象到msgpack格式,以及反序列化回Python对象。这个库对于那些需要快速、高效处理大量数据的Python应用尤其有用,例如在PyTorch这样的深度...
是二进制序列化格式。 如果您需要快速,紧凑的JSON替代方案,那么MessagePack是您的朋友。 例如,可以将一个小整数编码为一个字节,而短字符串则只需要一个字节前缀+原始字节数组即可。 MessagePack实现已经有多种...
- JSON、XML等文本格式的序列化速度较慢,而二进制格式(如protobuf、msgpack)通常更快。 9. **内存管理**: - 确保有足够的堆内存,避免因频繁GC导致的性能下降。 10. **硬件优化**: - 使用SSD硬盘,相比于...
此外,有一些第三方库,如`msgpack.js`或`bson`,提供了更高效的序列化和反序列化方案。它们使用二进制格式来表示数据,相比于JSON,可以在处理大量数据时提供更好的性能。但这也意味着在不同平台之间交换数据时需要...
C/C++中的msgpack库提供了方便的API来实现数据的序列化和反序列化。这个库允许开发者将C++对象转换为msgpack二进制格式,以便在网络间传输或存储,同时也能将接收到的msgpack数据还原为原来的C++对象。 **头文件和...
Msgpack序列化,带有使用自己的数据类的选项(Python 3.7) Redis通信层 可以添加其他序列化方法和通信层 例子 可以从以下目录运行示例,以获取数据类示例(使用localhost作为Redis主机): >>> python3.7 - m ...
本文将探讨如何在C语言中使用MsgPack库进行基本的数据序列化和反序列化操作。 首先,要使用MsgPack,你需要下载并安装MsgPack的C库。这通常包括获取源代码,配置项目,然后编译和安装。在Linux系统上,你可以通过...
Python-srsly是一个针对Python开发的现代高性能序列化库,其设计目的是为了提供高效的数据序列化和反序列化功能,特别是在处理JSON、MessagePack和BSON等格式时表现优秀。这个库是为了解决标准库如json和pickle在...
例如,在Python中,可以使用`msgpack`库进行序列化和反序列化操作。以下是一个简单的Python示例: ```python import msgpack # 序列化数据 data = {"name": "John", "age": 30, "city": "New York"} packed = ...