Retrofit 2发送一个空数组

时间:2017-05-27 11:39:22

标签: java retrofit2

我通过此Retrofit界面向后端发送一个整数数组:

@PATCH("save/ids")
@FormUrlEncoded
Call<Output> saveIds(@Field("ids[]") List<Integer> ids);

现在,当我有ArrayList个项目时,这会有效。 但要重置所有ID,服务器需要一个名为ids的空数组。 当我发送一个空数组时,Retrofit不会发送数组 - 它只是删除了参数。

我按如下方式创建ArrayList

List<Integer> ids = new ArrayList<>();
for (FooObjects object : listOfIds) {
    if (object.isEnabled()) {
        ids.add(object.getId());
    }
}

我怎样才能发送一个空阵列?

1 个答案:

答案 0 :(得分:1)

最简单的方法是更改​​Gson转换器上的设置,以便序列化空值 - 然后根据需要发送service

使用带有serializeNulls()的GsonBuilder创建一个新的Gson实例:

"ids":[]

然后,您可以在设置改造实例时将其传递给改装构建器:

private Gson gson = new GsonBuilder().serializeNulls().create();

提供了广泛的配置选项,并在Gson文档中列出:adaptive cards visualizer