使用注解 @Message 来让你可以序列化你自己类中对象的 public 字段。
本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6 .java 中下载到本地后进行编译测试。
package com.insight.demo.msgpack;
import org.junit.Test;
import org.msgpack.MessagePack;
import org.msgpack.annotation.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
/**
- MessagePack6 s
* - @author yhu
*/
public class MessagePack6 {
final Logger logger = LoggerFactory.getLogger(MessagePack6 .class);/** * MessageData Message */@Message // Annotationpublic static class MessageData { // public fields are serialized. public String uuid; public String name; public double version;}/** * Test MessagePack6 s */@Testpublic void testMessagePack6 s() { logger.debug("MessagePack6 s for s"); String uuid = UUID.randomUUID().toString(); // INIT OBJ MessageData src = new MessageData(); src.uuid = uuid; src.name = "MessagePack6"; src.version = 0.6; try { MessagePack msgPack = new MessagePack(); // Serialization logger.debug("------ Serialization ------"); byte[] bytes = msgPack.write(src); logger.debug("Bytes Array Length: [{}]", bytes.length); // Deserialization logger.debug("------ Deserialization ------"); MessageData dst = msgPack.read(bytes, MessageData.class); logger.debug("Check for UUID: [{}]", dst.uuid); assertEquals(uuid, dst.uuid); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); }}}
如果你希望按照顺序序列化多个对象的话,你可以使用 Packer 和 Unpacker 多个对象。
这是因为 MessagePack.write( ) 和 read(byte[]) 实际上每次都调用创建了 Packer 和 Unpacker 对象。
为了使用 Packer 和 Unpacker 对象,请调用 createPacker(OutputStream) 和 createUnpacker(InputStream)。
package com.insight.demo.msgpack;
import org.junit.Test;
import org.msgpack.MessagePack;
import org.msgpack.annotation.Message;
import org.msgpack.packer.Packer;
import org.msgpack.unpacker.Unpacker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
/**
- MessagePack6 s
* - @author yhu
*/
public class MessagePack6 s {
final Logger logger = LoggerFactory.getLogger(MessagePack6 s.class);/** * MessageData Message s */@Message // Annotationpublic static class MessageData { // public fields are serialized. public String uuid; public String name; public double version;}/** * Test MessagePack6 s */@Testpublic void testMessagePack6 s() { logger.debug("MessagePack6 s for s"); String uuid = UUID.randomUUID().toString(); // INIT 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; try { MessagePack msgPack = new MessagePack(); // Serialization logger.debug("------ Serialization ------"); ByteArrayOutputStream out = new ByteArrayOutputStream(); Packer packer = msgPack.createPacker(out); packer.write(src1); packer.write(src2); packer.write(src3); byte[] bytes = out.toByteArray(); logger.debug("Bytes Array Length: [{}]", bytes.length); // Deserialization logger.debug("------ Deserialization ------"); ByteArrayInputStream in = new ByteArrayInputStream(bytes); Unpacker unpacker = msgPack.createUnpacker(in); MessageData dst1 = unpacker.read(MessageData.class); MessageData dst2 = unpacker.read(MessageData.class); MessageData dst3 = unpacker.read(MessageData.class); logger.debug("Check for UUID: [{}]", dst1.uuid); assertEquals(uuid, dst1.uuid); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); }}}
https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X
继续阅读与本文标签相同的文章
Unity复制粘贴剪切板各平台源码
React 官方发布性能分析插件Profiler
-
React 官方发布 V16.6.0,新增支持 lazy,memo 和 contextType
2026-05-21栏目: 教程
-
如何设计高可用系统之故障隔离
2026-05-21栏目: 教程
-
Chrome性能专家Addy Osmani教你优化JavaScript
2026-05-21栏目: 教程
-
刷还是不刷,不仅是“脸”的问题
2026-05-21栏目: 教程
-
谷歌收购了Fitbit,但智能手表的机会或许在硬件之外
2026-05-21栏目: 教程
