使用注解<代码> @Message> 代码来让你可以序列化你自己类中对象的公共字段。
本代码可以在https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Object.java中下载到本地后进行编译测试。
包com.insight.demo.msgpack; 进口org.junit.Test; 进口org.msgpack.MessagePack; 进口org.msgpack.annotation.Message; 进口org.slf4j.Logger; 进口org.slf4j.LoggerFactory; 进口java.util.UUID; 进口静态org.junit.Assert.assertEquals;/* * * MessagePack6Objects * * @author yhu */公开课MessagePack6Object { 最后的日志记录器=LoggerFactory.getLogger (MessagePack6Object.class);/* * * MessageData消息对象 */@Message//注释 公共静态类MessageData {//公共字段序列化。 公共字符串uuid; 公共字符串名称; 公共双版本; }/* * *测试MessagePack6Objects */@Test 公共空间testMessagePack6Objects () { logger.debug (“MessagePack6Objects对象”); .toString字符串uuid=UUID.randomUUID () ();//初始化OBJ MessageData src=https://www.yisu.com/zixun/new MessageData (); src。uuid=uuid; src.name=" MessagePack6”; src。version=0.6; 尝试{ MessagePack msgPack=new MessagePack ();//序列化 序列化logger.debug (“- - - - - - - - - - - -”); byte[]字节=msgPack.write (src); logger.debug(“字节数组长度:[{}]”,bytes.length);//反序列化 logger.debug(反序列化”- - - - - - - - - - - -”); MessageData dst=msgPack。读(字节,MessageData.class); logger.debug(“检查对象UUID: [{}]”, dst.uuid); assertequal (uuid、dst.uuid); }捕捉(例外的前女友){ 记录器。错误(“MessagePack序列化和反序列化错误”前); } } }
如果你希望按照顺序序列化多个对象的话,你可以使用帕克<代码> 代码>和<代码>解包器> 代码多个对象。
这是因为<代码> MessagePack.write(对象)代码>和<代码>阅读(byte[]) 代码>实际上每次都调用创建了帕克<代码> 代码>和<代码>解包器> 代码对象。
为了使用帕克<代码> 代码>和<代码>解包器> 代码对象,请调用<代码> createPacker (OutputStream) 代码>和<代码> createUnpacker (InputStream) 代码>。
本代码可以https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Objects.java中查看。
包com.insight.demo.msgpack; 进口org.junit.Test; 进口org.msgpack.MessagePack; 进口org.msgpack.annotation.Message; 进口org.msgpack.packer.Packer; 进口org.msgpack.unpacker.Unpacker; 进口org.slf4j.Logger; 进口org.slf4j.LoggerFactory; 进口java.io.ByteArrayInputStream; 进口java.io.ByteArrayOutputStream; 进口java.util.UUID; 进口静态org.junit.Assert.assertEquals;/* * * MessagePack6Objects * * @author yhu */公开课MessagePack6Objects { 最后的日志记录器=LoggerFactory.getLogger (MessagePack6Objects.class);/* * * MessageData消息对象 */@Message//注释 公共静态类MessageData {//公共字段序列化。 公共字符串uuid; 公共字符串名称; 公共双版本; }/* * *测试MessagePack6Objects */@Test 公共空间testMessagePack6Objects () { logger.debug (“MessagePack6Objects对象”); .toString字符串uuid=UUID.randomUUID () ();//初始化OBJ MessageData src1=new MessageData (); src1。uuid=uuid; src1.name=" MessagePack6-src1”; src1。version=0.6; MessageData src2=new MessageData (); src2。uuid=uuid; src2.name=" MessagePack6-src2”; src2。version=10.6; MessageData src3=new MessageData (); src3。uuid=uuid; src3.name=" MessagePack6-src3”; src3。version=1.6; 尝试{ MessagePack msgPack=new MessagePack ();//序列化 序列化logger.debug (“- - - - - - - - - - - -”); ByteArrayOutputStream=新ByteArrayOutputStream (); 封隔器封隔器=msgPack.createPacker(出); packer.write (src1); packer.write (src2); packer.write (src3); byte[]字节=out.toByteArray (); logger.debug(“字节数组长度:[{}]”,bytes.length);//反序列化 logger.debug(反序列化”- - - - - - - - - - - -”); ByteArrayInputStream=新ByteArrayInputStream(字节); 解包器解包器=msgPack.createUnpacker(的); MessageData dst1=unpacker.read (MessageData.class); MessageData dst2=unpacker.read (MessageData.class); MessageData dst3=unpacker.read (MessageData.class); logger.debug(“检查对象UUID: [{}]”, dst1.uuid); assertequal (uuid、dst1.uuid); }捕捉(例外的前女友){ 记录器。错误(“MessagePack序列化和反序列化错误”前); } } }MessagePack Java 0.6。X使用一个消息打包(message-packable)类