我从服务器获得了一个json数组response:
[{"id":1, "name":"John", "age": 20},{"id":3, "name":"Tomas", "age": 29}, {"id":12, "name":"Kate", "age": 32}, ...]
Run Code Online (Sandbox Code Playgroud)
我想使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的服务类中,我做了以下事情:
//'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
}
Run Code Online (Sandbox Code Playgroud)
我得到了异常java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为Person.如何摆脱我的问题?我只想将json数组转换为List<Person>对象.有帮助吗?
Per*_*ion 22
您需要使用超类型令牌进行解组,以便Gson知道列表中的泛型类型.试试这个:
TypeToken<List<Person>> token = new TypeToken<List<Person>>(){};
List<Person> personList = gson.fromJson(response, token.getType());
Run Code Online (Sandbox Code Playgroud)
并迭代结果如下:
for(Person person : personList) {
// some code here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28381 次 |
| 最近记录: |