MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化
当你希望在 Map 中不使用 String 为 Key,那么你需要使用 MessagePackKeySerializer 来为 key 进行序列化。
/** * testMessagePackSerializationMapKey */ @Test @JsonSerialize(keyUsing = MessagePackKeySerializer.class) public void testMessagePackSerializationMapKey() { logger.debug("testMessagePackSerializationNotCloseInputStream"); byte[] bytes = new byte[0]; Integer uuid_a = 101; Integer uuid_b = 102; // Instantiate ObjectMapper for MessagePack ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); Map<Integer, MessageData> map = new HashMap<>(); MessageData messageData = new MessageData(); // Element A in MAP messageData.setUuid(UUID.randomUUID().toString()); messageData.setName("CWIKI.US - A"); map.put(uuid_a, messageData); // Element B in MAP messageData = new MessageData(); messageData.setUuid(UUID.randomUUID().toString()); messageData.setName("CWIKI.US - B"); map.put(uuid_b, messageData); try { // Serialize a Java object to byte array bytes = objectMapper.writeValueAsBytes(map); logger.debug("Length of Bytes: [{}]", bytes.length); // Deserialize the byte array to a MAP Map<String, MessageData> deserialized = objectMapper.readValue(bytes, new TypeReference<Map<Integer, MessageData>>() { }); logger.debug("Deserialized MAP Count: [{}]", deserialized.size()); logger.debug("MAP index 0: [{}]", deserialized.get(uuid_a).getName()); assertEquals("CWIKI.US - A", deserialized.get(uuid_a).getName()); } catch (JsonProcessingException ex) { logger.error("Serialize Error", ex); } catch (IOException e) { e.printStackTrace(); } }
https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MessagePack Java Jackson Dataformat 不使用 str8 数据类型的序列化
老的 msgpack-java(例如 0.6.7)并不支持MessagePack str8 数据类型。 当你的希望的你的应用程序需要支持老的版本的话,你需要禁用这个数据类型,例如使用下面的语句: MessagePack.PackerConfig config = new MessagePack.PackerConfig().withStr8FormatSupport(false); ObjectMapper mapperWithConfig = new ObjectMapper(new MessagePackFactory(config)); // This string is serialized as bin8 type byte[] resultWithoutStr8Format = mapperWithConfig.writeValueAsBytes(str8LengthString); https://www.cwiki.us/display/Serialization/MessagePack+Jackson+Dataformat
- 下一篇
Java多线程之Executor框架:Callable、Future、Executor和ExecutorService
引言 Executor框架是指JDK 1.5中引入的一系列并发库中与Executor相关的功能类,包括Executor、Executors、ExecutorService、Future、Callable等。 一、为什么要引入Executor框架? 1、如果使用new Thread(...).start()的方法处理多线程,有如下缺点: 开销大。对于JVM来说,每次新建线程和销毁线程都会有很大的开销。 线程缺乏管理。没有一个池来限制线程的数量,如果并发量很高,会创建很多线程,而且线程之间可能会有相互竞争,这将会过多占用系统资源,增加系统资源的消耗量。而且线程数量超过系统负荷,容易导致系统不稳定。 2、使用线程池的方法,有如下优点: 线程复用。通过复用创建了的线程,减少了线程的创建、消亡的开销。 有效控制并发线程数。 提供了更简单灵活的线程管理。可以提
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境