Gson to HashMap
Есть ли способ конвертировать строку, содержащую json, в HashMap, где каждый ключ является json-ключом, а значением является значение json-key? Json не имеет вложенных значений. Я использую Gson lib.
Например, данный JSON:
{
"id":3,
"location":"NewYork"
}
в результате получается HashMap:
<"id", "3">
<"location", "NewYork">
Спасибо
Ответы
Ответ 1
Используйте TypeToken
в соответствии с Часто задаваемые вопросы по GSON:
Gson gson = new Gson();
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
Map<String,String> map = gson.fromJson(json, stringStringMap);
Без кастинга. Нет ненужного создания объекта.
Ответ 2
Если я использую решение TypeToken с Map < Enum, Object > , я получаю "дублирующий ключ: null".
Лучшее решение для меня:
String json = "{\"id\":3,\"location\":\"NewYork\"}";
Gson gson = new Gson();
Map<String, Object> map = new HashMap<String, Object>();
map = (Map<String, Object>)gson.fromJson(json, map.getClass());
Результат:
{id=3.0, location=NewYork}
Ответ 3
Мне нравится:
private static class MyMap extends HashMap<String,String> {};
...
MyMap map = gson.fromJson(json, MyMap.class);