使用注解 @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)。

本代码可以 https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6 s.java 中查看。

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

收藏 打印