【发布时间】:2017-03-29 22:30:12
【问题描述】:
我希望就如何解决此问题获得一些指导。我正在使用第三方 API 获取 JSON 数据。它的结构类似于:
{items: [
{attribute : Value},
{attribute : Value}]
count : value,
etc
}
items 数组可以保存不同的数据,所以我有一个类:
public Items<T> {
private List<T> items;
// Others API Variables
public List<T> getItems(){
return items;
}
public void setItems(List<T> items){
this.items = items;
}
// Other Getters/Setters
}
我在调用类中尝试做的是:
public CallingClass {
public void Method(){
//Code to get reader object
Items<User> userItems = Gson().fromJson(ReaderObject, Items.class);
//Other processing code
}
}
我得到了错误:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to User.class
我正在阅读this 的帖子,我认为解决方案与我需要的类似,但我不知道该找谁。我的想法是有一个 Items 类,可以传递返回的不同类型。
想法,帮助,任何事情都会有帮助。
编辑:
好吧,所以我现在感觉自己像个白痴,但睡一觉有帮助。解决方案在我发布的链接中,我只是不需要列表。我的编码解决方案如下:
public CallingClass {
public void Method(){
//Code to get reader object
Items<User> userItems = Gson().fromJson(ReaderObject, new TypeToken<Items<User>>(){}.getType());
//Other processing code
}
}
【问题讨论】:
-
您确实链接到您的帖子的副本。您只需要复制粘贴答案并替换为您自己的类名。
new TypeToken<Items<User>>() { }.getType();没有工作吗? -
是的,一个简单的
Items.class类是不够的。你需要通过new TypeToken<Items<User>>() { }.getType();构造完整的Type
标签: java generics gson classcastexception