MessagePack Java杰克逊Dataformat在地图中不使用Str

  

当你希望在地图中不使用字符串为关键,那么你需要使用<代码> MessagePackKeySerializer>

本测试方法,可以在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)
  公共空间testMessagePackSerializationMapKey () {
  logger.debug (“testMessagePackSerializationNotCloseInputStream”);
  
  byte[]字节=新字节[0];
  整数uuid_a=101;
  整数uuid_b=102;//实例化objectmap MessagePack
  objectmap objectmap=new objectmap(新MessagePackFactory ());
  
  MessageData> Map<整数;地图=new HashMap<在();
  MessageData MessageData=https://www.yisu.com/zixun/new MessageData ();//元素的映射
  .toString messageData.setUuid (UUID.randomUUID () ());
  messageData.setName (“CWIKI。我们——”);
  地图。把(uuid_a messageData);//元素B在地图
  messageData=https://www.yisu.com/zixun/new messageData ();
  .toString messageData.setUuid (UUID.randomUUID () ());
  messageData.setName (“CWIKI。我们- B”);
  地图。把(uuid_b messageData);
  
  
  尝试{//序列化Java对象的字节数组
  字节=objectMapper.writeValueAsBytes(地图);
  logger.debug(“长度的字节:({})”,bytes.length);//反序列化地图的字节数组
  MessageData> Map<字符串;反序列化=objectmap。readValue(字节,新的TypeReference在(){
  });
  logger.debug(“反序列化地图数:[{}]”,deserialized.size ());
  logger.debug(“地图索引0:[{}]”,deserialized.get (uuid_a) . getname ());
  
  assertequal (“CWIKI。我们——”,deserialized.get (uuid_a) . getname ());
  
  }捕捉(JsonProcessingException ex) {
  记录器。错误(“序列化错误”,前女友);
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  }

https://www.cwiki.us/display/Serialization/MessagePack +杰克逊+ Dataformat


MessagePack Java杰克逊Dataformat在地图中不使用Str