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