Как десериализовать карту с помощью целочисленного ключа в Java - PullRequest
4 голосов
/ 06 января 2012

Я использую flexjson api для сериализации и десериализации карты с целочисленными ключами.Теперь при десериализации ключи карты преобразуются в строку.Есть ли способ сохранить ключи как целое число?

Вот пример блока кода

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));
}

Десериализация не дает ошибок, но ключи преобразуются вСтрока.

1 Ответ

1 голос
/ 13 сентября 2015

Это возможно с Генсоном вот так:

Genson genson = new Genson();
Map<Integer, Object> result = genson.deserialize(json, new GenericType<Map<Integer, Object>>() {});
...