MessagePack Java Jackson Dataformat does not use Str in Map
When you want to Key without using String in Map, you need to use MessagePackKeySerializer to serialize the key.
This test method can be found in 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 An 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