使用Gson解析HashMap >会抛出java.lang.ClassCastException

问题描述 投票:0回答:1

我有这样的杰森:

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

而且我使用Retrofit转换成这样的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

所以我如何用Gson将jsonString转换为HashMap<String, ArrayList<User>>对象?

android json gson retrofit parse-error
1个回答
0
投票

我在这里找到了解决方案:(详细说明)https://stackoverflow.com/a/32494079/1472483

使用TypeToken

Type type = new TypeToken<HashMap<String, ArrayList<User>>>() {}.getType();
HashMap<String, ArrayList<User>> map = gson.fromJson(jsonString, type);
© www.soinside.com 2019 - 2024. All rights reserved.