java - 将 json 数组转换为 java 列表对象

标签 java json

<分区>

我从服务器 response 得到了一个 json 数组 :

[{"id":1, "name":"John", "age": 20},{"id":3, "name":"Tomas", "age": 29}, {"id":12, "name":"Kate", "age": 32}, ...]

我想使用 gson将上述 json 数据转换为 Java List<Person>目的。我尝试了以下方式:

首先,我创建了一个Person.java类:

public class Person{
  private long id;
  private String name;
  private int age;

  public long getId(){
     return id;
  }

  public String getName(){
     return name;
  }

  public int getAge(){
     return age;
  }
}

然后,在我的服务类中,我执行了以下操作:

//'response' is the above json array 
List<Person> personList = gson.fromJson(response, List.class); 

for(int i=0; i<personList.size(); i++){
   Person p = personList.get(i); //java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to Person
}

我得到异常 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to Person 。如何摆脱我的问题?我只想将 json 数组转换为 List<Person>目的。有帮助吗?

最佳答案

您需要使用父类(super class)型标记进行解码,以便 Gson 知道列表中的通用类型是什么。试试这个:

TypeToken<List<Person>> token = new TypeToken<List<Person>>(){};
List<Person> personList = gson.fromJson(response, token.getType());

并这样遍历结果:

for(Person person : personList) {
    // some code here
}

关于java - 将 json 数组转换为 java 列表对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158916/

相关文章:

java - 数组中的数组 - Java 代码

java - 限制生成的线程数量

java - 将表 html 行值读取到 servlet 到另一个 jsp 页面以进行编辑

json - Swift:如何将 JSON 类型转换为 NSArray?

java - 删除未保存的对象不会引发异常

php - 如何从iphone post请求中获取json数据

javascript - $.ajax post 请求头字段Content-Type不允许CORS

javascript - Ionic 2/3 插件加载问题 : possibly from app. bundle.js

json - Scalaz 树到 JSON

java - Gradle:无法下载ojdbc7.jar