千家信息网

MessagePack Java Jackson Dataformat 在 Map 中不使用 Str

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,当你希望在 Map 中不使用 String 为 Key,那么你需要使用 MessagePackKeySerializer 来为 key 进行序列化。本测试方法,可以在 https://github.c
千家信息网最后更新 2025年02月03日MessagePack Java Jackson Dataformat 在 Map 中不使用 Str

当你希望在 Map 中不使用 String 为 Key,那么你需要使用 MessagePackKeySerializer 来为 key 进行序列化。

本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/com/insight/demo/serialize/MessagePackSerializer.java 中找到。

/** * 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 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 deserialized = objectMapper.readValue(bytes, new TypeReference>() {        });        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


0