在我的Android项目中使用Volley,我得到一个json响应,如:
{
"value1": 1,
"value2": aaa,
"subvalues": [
{
"value1": 297,
"value2": 310,
"class3": {
"name": "name1",
"id": 1,
"value": 32
}
},
...
]
}
我需要使用Gson将其反序列化为pojo。课程是:
的Class1:
public class class1 {
private int value1;
private String value2;
private List<class2> vals;
public class class2 {
private int value1;
private int value2;
private class3 c3;
}
}
CLASS3:
public class class3 {
private String name;
private int id;
private int value;
}
致电后
Gson g = new Gson();
class1 c1 = g.fromJson(jsonString, class1.class);
我只填充了value1
和value2
class1
。列表始终为null
。
我该如何解决这个问题?
答案 0 :(得分:6)
您需要更改:
private List<class2> vals;
为:
private List<class2> subvalues;
如果您想保留vals
字段原始名称,可以使用SerializedName注释:
public class class1 {
private int value1;
private String value2;
@SerializedName("subvalues")
private List<class2> vals;
...
}
Here您可以找到更多信息。
答案 1 :(得分:4)
将private List<class2> vals;
更改为private List<class2> subvalues
答案 2 :(得分:0)
这是因为在JSON中您引用subvalues
并在java对象中将您的字段名称称为vals
。将其更改为subvalues
它将起作用。
答案 3 :(得分:0)
正如其他答案所述,您没有正确命名变量,因为gson能够正确反序列化。请注意,您在返回的json中看起来也有一个拼写错误,在第二类中,指的是calss3
而不是class3。