MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化
Posted huyuchengus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化的主要内容,如果未能解决你的问题,请参考以下文章
MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化
MessagePack Java Jackson Dataformat - 列表(List)的序列化和反序列化
MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量
MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化