gpt4 book ai didi

java - Retrofit 2 发送一个空数组

转载 作者:行者123 更新时间:2023-11-30 10:29:09 24 4
gpt4 key购买 nike

我正在通过这个 Retrofit 接口(interface)向后端发送一个整数数组:

@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());
}
}

我怎样才能发送一个空数组呢?

最佳答案

最简单的方法是更改​​ Gson 转换器上的设置,以便它序列化空值 - 然后这将发送 "ids":[],如您所愿。

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

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

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

private Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(API_URL)
.addConverterFactory(GsonConverterFactory.create(gson));

提供了广泛的配置选项,并在 Gson 文档中列出:https://github.com/google/gson/blob/master/UserGuide.md

关于java - Retrofit 2 发送一个空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44216394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com