MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量
com.fasterxml.jackson.databind.ObjectMapper 在默认的情况下在写出输入后将会关闭输出流(output stream)。
如果你希望序列化多值变量在同一个输出流的情况下,你不希望在输出完一个就关闭输出流,你可以设置 JsonGenerator.Feature.AUTO_CLOSE_TARGET 参数为 False。
/**
* Serialization Not Close output stream
*/
@Test
public void testMessagePackSerializationNotCloseOutputStream() {
logger.debug("testMessagePackSerializationNotCloseOutputStream");
try {
File tempFile = File.createTempFile("messagepack-", "-cwiki.us");
OutputStream out = new FileOutputStream(tempFile);
ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory());
objectMapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
objectMapper.writeValue(out, 1);
objectMapper.writeValue(out, "two");
objectMapper.writeValue(out, 3.14);
out.close();
MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(new FileInputStream(tempFile));
System.out.println(unpacker.unpackInt()); // => 1
System.out.println(unpacker.unpackString()); // => two
System.out.println(unpacker.unpackFloat()); // => 3.14
tempFile.deleteOnExit();
} catch (IOException ex) {
logger.error("Serialize Error", ex);
}
}
https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
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 =newObjectMapper(newMessagePackFactory()); objectMapp...
-
下一篇
MessagePack Java Jackson 在不关闭输入流(input stream)的情况下反序列化多变量
com.fasterxml.jackson.databind.ObjectMapper在读取输入流变量的时候默认的将会关闭输入流。 如果你不希望关闭输入流,你可以设置JsonParser.Feature.AUTO_CLOSE_SOURCE参数为 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 input stream */ @Test public void testMessagePackSerializationNotCloseInputStream() { logger.debug("testMessagePackSerializationNotCloseInputStream"); try { File tempFile = File.crea...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G