我使用Gson.fromJson()返回空值,但我不明白为什么。 我正在调用一个API,该API以这种格式返回一些数据:
{
"RealisedItems":{
"realisedItem":[
{
"actionItem1":1,
"actionItem2":"ITEM_ANSWER",
"actionItem3":"CREATE_ITEM",
"actionItem4":[
"XXXXXXX"
]
},
{
"actionItem1":2,
"actionItem2":"ITEM_ANSWER",
"actionItem3":"LINK_ITEM",
"actionItem5":"202007050000",
"actionItem4":[
"XXXXXXX"
]
}
]
}
}
这是我要接收数据的对象:
public class RealisedItems {
private List<RealisedItem> realisedItem = null;
public List<RealisedItem> getRealisedItem() {
return realisedItem;
}
public void setRealisedItem(List<RealisedItem> realisedItem) {
this.realisedItem = realisedItem;
}
}
和
public class RealisedItem {
private Long actionItem1;
private String actionItem2;
private String actionItem3;
private List<String> actionItem4 = null;
private String actionItem5;
public Long getActionItem1() {
return actionItem1;
}
public void setActionItem1(Long actionItem1) {
this.actionItem1 = actionItem1;
}
public String getActionItem2() {
return actionItem2;
}
public void setActionItem2(String actionItem2) {
this.actionItem2 = actionItem2;
}
public String getActionItem3() {
return actionItem3;
}
public void setActionItem3(String actionItem3) {
this.actionItem3 = actionItem3;
}
public List<String> getActionItem4() {
return actionItem4;
}
public void setActionItem4(List<String> actionItem4) {
this.actionItem4 = actionItem4;
}
public String getActionItem5() {
return actionItem5;
}
public void setActionItem5(String actionItem5) {
this.actionItem5 = actionItem5;
}
}
使用调试模式,我可以看到来自以下行的响应对象:gson.fromJson(response, RealisedItems.class);
包含您可以在上面看到的String格式的Json,但此后我的列表为空。我将相同的代码用于来自其他服务的另一个响应,并且我的对象中充满了数据。
据我所见,在第一个“ realisedItem”对象中,我有4个项目,而在第二个对象中,我有5个项目。
我试图将列表更改为数组(RealisedItem []),但它也不起作用。
我还尝试将@Expose与@SerializedName结合使用,并将Gson gson = new Gson();
更改为Gson gson = new GsonBuilder().create();
和Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
,而第五项没有@Expose批注,但我的列表仍然为空
你能启迪我吗?谢谢!
答案 0 :(得分:0)
由于@Andreas,我意识到我犯了一个错误,并使用RealisedItems作为根对象。我刚刚创建了一个名为ItemsOutput的新对象,其中包含RealisedItems字段。我添加了一个@SerializedName批注,以大写形式将其称为“ RealisedItems”,并使用新创建的对象更改了我的Gson.fromJson()调用。工作正常 谢谢!