【问题标题】:Java Gson List - How to access individual items [duplicate]Java Gson List - 如何访问单个项目[重复]
【发布时间】: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;
}

因此.. 我现在应该有一个 ListPeople.. 但是,每当我尝试执行以下操作时:

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&lt;People&gt; 传递给我正在尝试使用数据的方法

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

谁能建议我在这里做错了什么?

【问题讨论】:

  • 这个new TypeToken&lt;BusinessData&lt;T&gt;&gt;(){}.getType() 永远不会工作。有关原因和潜在解决方案的解释,请参阅副本。

标签: java gson


【解决方案1】:

问题是你得到一个人数组,首先从数组转换到列表

【讨论】:

  • 你能举个例子吗?我不太清楚你的意思
【解决方案2】:

这里:

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

}

【讨论】:

  • 希望对您有所帮助
  • 我很困惑。我已经有一个 List&lt;Person&gt; 包含来自 json 数组的 Person 数组?
  • 是的,你只需要投射
猜你喜欢
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 2019-12-10
  • 1970-01-01
相关资源
最近更新 更多