Parse HashMap с Gson бросает java .lang.ClassCastException - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть Json, как это:

{
    "a": [
        {"name": "a"}
    ],
    "b": [
        {"name": "b"}
    ]
} 

И я использую Модификация для преобразования в java объект, подобный этому:

public interface TheService {
    @GET("data")
    Call<HashMap<String, ArrayList<User>>> getUsers();
}

Это нормально работает. Но когда я кеширую строку json и анализирую ее вручную с помощью Gson:

Gson gson = new Gson();
HashMap<String, ArrayList<User>> map = gson.fromJson(jsonString, HashMap.class);

Выдает ошибку: java .lang.ClassCastException: com.google.gson.internal.LinkedTreeMap не может быть преобразованным в xxx.User

Так как же мне преобразовать jsonString в HashMap<String, ArrayList<User>> объект с помощью Gson?

1 Ответ

0 голосов
/ 26 апреля 2020

Я нашел решение здесь: (Подробное объяснение) { ссылка }

С использованием TypeToken

Type type = new TypeToken<HashMap<String, ArrayList<User>>>() {}.getType();
HashMap<String, ArrayList<User>> map = gson.fromJson(jsonString, type);
...