4

I have been using flexjson api to serialize and deserialize a map with integer keys. Now while deserializing the map keys gets converted to string. Is there some way in which the keys can be retained as integer.

Here is a sample code block

Map<Integer,Object> map = new HashMap<Integer, Object>();
map.put(1, "a");
map.put(2,"b");
flexjson.JSONSerializer serializer = new flexjson.JSONSerializer();
String serializedMapString = serializer.serialize(map);

flexjson.JSONDeserializer<Map<Integer,Object>> deserializer = new flexjson.JSONDeserializer<Map<Integer,Object>>();
Map<Integer,Object> deserializedMap = deserializer.deserialize(serializedMapString);

for(Integer key: deserializedMap.keySet()){
System.out.println(key+"-"+deserializedMap.get(key));
}

The deserialization doesn't give any errors, but the keys get converted to String.

Programmer Bruce
  • 64,977
  • 7
  • 99
  • 97
Raks
  • 870
  • 3
  • 11
  • 27

1 Answers1

1

This is possible with Genson like that:

Genson genson = new Genson();
Map<Integer, Object> result = genson.deserialize(json, new GenericType<Map<Integer, Object>>() {});
eugen
  • 5,856
  • 2
  • 29
  • 26