Java Gson列表-如何访问单个项目

时间:2019-01-04 21:20:42

标签: java gson

我有以下课程:

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

对我来说毫无意义,因为:

  1. 我将List<People>传递给我试图很好地使用数据的方法

  2. 如果我只是做一个标准的System.out.println(people.get(1)),那么数据在类Person中的输出就很好了

有人可以在这里提出我的错吗?

2 个答案:

答案 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;
    }

}