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

原文地址:https://www.cnblogs.com/huyuchengus/p/11330476.html

时间: 2024-10-08 10:22:19

MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化的相关文章

MessagePack Java Jackson Dataformat - 列表(List)的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义. https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java 本测试方法,可以在 https://github.com/cwiki-us-de

MessagePack Java Jackson Dataformat - POJO 的序列化和反序列化

在本测试代码中,我们定义了一个 POJO 类,名字为 MessageData,你可以访问下面的链接找到有关这个类的定义. https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/main/java/com/insight/demo/serialize/model/msgpack/MessageData.java POJO 的序列化和反序列化 你仅仅需要对 MessagePackFactory

MessagePack Java Jackson Dataformat - 安装

中文标题[MessagePack 的 Jackson 数据格式] 本页面中的所有示例程序,请到代码库 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java 中下载进行测试. Jackson 扩展库是一个易读取,同时是使用  MessagePack 创建的组件库,用于从 jackson-databind API 对数据进行编码. 这个组件扩展了标准的 Jackson streaming API (JsonFactory, 

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 Mes

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

MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量

com.fasterxml.jackson.databind.ObjectMapper 在默认的情况下在写出输入后将会关闭输出流(output stream). 如果你希望序列化多值变量在同一个输出流的情况下,你不希望在输出完一个就关闭输出流,你可以设置  JsonGenerator.Feature.AUTO_CLOSE_TARGET 参数为 False. 本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-

获取map中的一个value值以及遍历map获得map里所有key、value的值

前言: 1.声明一个map: Map map = new HashMap();2.向map中放值,注意:map是key-value的形式存放的.如: map.put(”sa”,”dd”); 3.从map中取值:String str = map.get(”sa”).toString();结果是:str = ”dd”;4.遍历一个map,从中取得key 和valueMap map = new HashMap() ; Iterator it = map.entrySet().iterator() ;w

Java——(七)Map之HashMap和Hashtable实现类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Map Map用于具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key, 另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的key不允许 重复,即同一个Map对象的任何两个key通过equals()方法比较总是返回false. Set与Map之间的关系非常密切.虽然Map中放的元素是key—value对,Set集合中放的元素

JAVA的容器---List,Map,Set (转)

JAVA的容器---List,Map,Set Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List Set,区别在于List是有序的Collecti