我有以下课程:
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
中的输出就很好了
有人可以在这里提出我的错吗?
答案 0 :(得分:-1)
问题是您要得到一个人数组,首先要从数组强制转换为列表
答案 1 :(得分:-1)
此处:
public class Test {
public Test() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) throws Exception {
Person personA = new Person("David");
Person personb = new Person("Pedro");
Person[] arrayPeople = {personA, personb};
List<Person> listPeople = Arrays.asList(arrayPeople);
for(Person x: listPeople)
System.out.println(x.getName());
}
}
class Person{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name) {
super();
this.name = name;
}
}