【发布时间】:2019-05-31 10:56:16
【问题描述】:
我有以下课程:
class Person
{
String Name;
}
我读入了以下 Json 数据:
{
"People": [{
"Name": "Test"
},
{
"Name": "Hello"
}
]
}
我使用通用类来执行此操作,因为这些可能是学生、教授等。
public BusinessData<T> GetDataFromJson(String Url)
{
// Get the data from the URL
return new Gson().fromJson(data, new TypeToken<BusinessData<T>>(){}.getType());
}
public List<People> GetPeople()
{
return this.GetDataFromJson(Url).People;
}
因此.. 我现在应该有一个 List 类 People.. 但是,每当我尝试执行以下操作时:
for(People person : PeopleList)
{
System.out.println(person.getName());
}
我收到以下错误:
com.google.gson.internal.LinkedTreeMap cannot be cast to com.proj.business.Models.Person
这对我来说毫无意义,因为:
我将
List<People>传递给我正在尝试使用数据的方法如果我只是做一个标准的
System.out.println(people.get(1)),那么数据就可以在Person类中打印出来了
谁能建议我在这里做错了什么?
【问题讨论】:
-
这个
new TypeToken<BusinessData<T>>(){}.getType()永远不会工作。有关原因和潜在解决方案的解释,请参阅副本。