MessagePack Java 0.6.X 多种类型变量的序列化和反序列化
类 Packer/Unpacker 允许序列化和反序列化多种类型的变量,如后续程序所示。这个类启用序列化和反序列化多种类型的变量和序列化主要类型变量以及包装类,String 对象,byte[] 对象, ByteBuffer 对象等的方法相似。
如上面提示的,你可以序列化和反序列化你自己的对象,前提是你自己的对象需要使用 @Message 注解。
package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; 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.math.BigInteger; import java.nio.ByteBuffer; /** * MessagePack6Types * * @author yhu */ public class MessagePack6Types { final Logger logger = LoggerFactory.getLogger(MessagePack6Types.class); /** * Test MessagePack6Types */ @Test public void testMessagePack6Types() { logger.debug("testMessagePack6Types for Types"); MessagePack msgpack = new MessagePack(); try { // // Serialization // ByteArrayOutputStream out = new ByteArrayOutputStream(); Packer packer = msgpack.createPacker(out); // Serialize values of primitive types packer.write(true); // boolean value packer.write(10); // int value packer.write(10.5); // double value // Serialize objects of primitive wrapper types packer.write(Boolean.TRUE); packer.write(new Integer(10)); packer.write(new Double(10.5)); // Serialize various types of arrays packer.write(new int[]{1, 2, 3, 4}); packer.write(new Double[]{10.5, 20.5}); packer.write(new String[]{"msg", "pack", "for", "java"}); packer.write(new byte[]{0x30, 0x31, 0x32}); // byte array // Serialize various types of other reference values packer.write("MessagePack"); // String object packer.write(ByteBuffer.wrap(new byte[]{0x30, 0x31, 0x32})); // ByteBuffer object packer.write(BigInteger.ONE); // BigInteger object // // Deserialization // byte[] bytes = out.toByteArray(); ByteArrayInputStream in = new ByteArrayInputStream(bytes); Unpacker unpacker = msgpack.createUnpacker(in); // to primitive values boolean b = unpacker.readBoolean(); // boolean value int i = unpacker.readInt(); // int value double d = unpacker.readDouble(); // double value // to primitive wrapper value Boolean wb = unpacker.read(Boolean.class); Integer wi = unpacker.read(Integer.class); Double wd = unpacker.read(Double.class); // to arrays int[] ia = unpacker.read(int[].class); Double[] da = unpacker.read(Double[].class); String[] sa = unpacker.read(String[].class); byte[] ba = unpacker.read(byte[].class); // to String object, ByteBuffer object, BigInteger object, List object and Map object String ws = unpacker.read(String.class); ByteBuffer buf = unpacker.read(ByteBuffer.class); BigInteger bi = unpacker.read(BigInteger.class); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); } } }
方法 Packer#write() 允许序列化多种类型的数据。
类 Unpacker 针对反序列化二进制数据为主要变量,提供了一个反序列化方法。例如,你希望将二进制数据反序列化为 boolean (或者 int) 数据类型,你可以使用 Unpacker 中的 readBoolean (或者 readInt) 方法。
Unpacker 同时也为参考变量提供了一个读取的方法。这个方法允许为一个参考变量从二进制数据中进行反序列化。参考变量的定义为你将类型指定为一个参数。例如,你希望反序列化二进制数据到 String (或者 byte[]) 对象,你必须在调用 read(String.class) (或者 read(byte[].class)) 方法的时候定义描述。
https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JS实现分页功能
分页在网页上是一个很常见的功能,今天我们来实现一个新闻列表,包含了分页的功能,效果如下: 那么如何来实现这个功能呢? 一:html和css如下所示,就不多说了 html: <!--新闻容器--> <div class="new-main"></div> <!--分页容器--> <div class="pagination-container"> <span class="page-change prev">上一页</span> <div class="pagination"></div> <span class="page-change next">下一页</span> </div> css: body{ background-color: #f8f8f8; }.new-main{ width: 40%; margin: 100px auto 20px; padding: 15px; background-color: #fff; }.new-...
- 下一篇
MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
为了序列化原生的容器对象例如 List 和Map对象,你必须使用Template。 Template 对象是serializer 和 deserializer 的配对。例如,为了序列化一个List对象,在List对象中Integer对象为元素,你可以使用下面的方法来创建一个模板对象(Template object)。 Template listTmpl = Templates.tList(Templates.TInteger); 类tList,TInteger是静态方法,字段为Templates。 一个List和Map对象的用例如下显示: 本代码可以在https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Template.java中查看。 package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.Message...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Linux系统CentOS6、CentOS7手动修改IP地址