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

我从服务器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.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 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 } 

我得到了exceptionjava.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为Person 。 如何摆脱我的问题? 我只想将json数组转换为List对象。 有帮助吗?

您需要使用超类型令牌进行解组,以便Gson知道列表中的generics类型。 尝试这个:

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

并迭代结果如下:

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