Gson fromJson返回空数据

时间:2020-07-05 15:43:38

标签: java json gson

我使用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批注,但我的列表仍然为空

你能启迪我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

由于@Andreas,我意识到我犯了一个错误,并使用RealisedItems作为根对象。我刚刚创建了一个名为ItemsOutput的新对象,其中包含RealisedItems字段。我添加了一个@SerializedName批注,以大写形式将其称为“ RealisedItems”,并使用新创建的对象更改了我的Gson.fromJson()调用。工作正常 谢谢!