我有这样的杰森:
{
"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>>
对象?
我在这里找到了解决方案:(详细说明)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);