MessagePack Java Jackson 序列化和反序列化 POJO 为 MessagePack 的数组类型用来与 msgpack-...
在 msgpack-java 0.6 或者早期的版本中,POJO 在 MessagePack 中被序列化和反序列化为数组变量。
变量的顺序是基于 Java 类中变量的内部顺序了,这种本来是一种原生的序列化方法,但是会导致一些问题。导致这些问题的原因是在 Java 对象的内部变量的顺序与 Java 实现的顺序不能保证完全的一致。
从另外一个角度来看,使用 jackson-databind 进行的序列化和反序列化方式是基于 POJO 的 Key-Value 对的。因此在 jackson-dataformat-msgpack 与 POJO 处理的方式是相同的。因此,这就导致了与 msgpack-java:0.6 或者早期的版本在对 POJO 进行序列化和反序列化的时候不兼容。
如果你希望在新的版本中也使用与 msgpack-java:0.6 或者早期版本相同的处理 POJO 的方法,你可以使用 JsonArrayFormat。具体使用方法如下所示:
ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); objectMapper.setAnnotationIntrospector(new JsonArrayFormat());
https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MessagePack Java Jackson Dataformat - Map 的序列化和反序列化
本测试方法,可以在https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java中找到。 我们需要定义测试需要的 MAP,定义 Map 的方法你可以在下面的测试程序中找到。 /** * SerializationMap */ @Test public void testMessagePackSerializationMap() { byte[] bytes = new byte[0]; String uuid_a = UUID.randomUUID().toString(); String uuid_b = UUID.randomUUID().toString(); // Instantiate ObjectMapper for MessagePack ObjectMapper objectMapper = new ObjectMapper(new Message...
- 下一篇
MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量
com.fasterxml.jackson.databind.ObjectMapper在默认的情况下在写出输入后将会关闭输出流(output stream)。 如果你希望序列化多值变量在同一个输出流的情况下,你不希望在输出完一个就关闭输出流,你可以设置JsonGenerator.Feature.AUTO_CLOSE_TARGET参数为 False。 本测试方法,可以在https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java中找到。 /** * Serialization Not Close output stream */ @Test public void testMessagePackSerializationNotCloseOutputStream() { logger.debug("testMessagePackSerializationNotClo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果