zoukankan      html  css  js  c++  java
  • MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化

    当你希望在 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<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

  • 相关阅读:
    图论初步
    分块和块状链表
    线段树入门
    ST表与树状数组
    [luogu P1312]Mayan游戏
    [luoguP4139]上帝与集合的正确用法


    电解质
    无机盐
  • 原文地址:https://www.cnblogs.com/huyuchengus/p/11330476.html
Copyright © 2011-2022 走看看