Parse HashMap<String, ArrayList<User>> with Gson 抛出 java.lang.ClassCastException



我有一个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。用户

那么,如何使用Gson将jsonString转换为HashMap<String, ArrayList<User>>对象呢?

我在这里找到了一个解决方案:(详细解释(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);

相关内容

  • 没有找到相关文章

最新更新