本文介紹了改裝2發送空數組的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在通過此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());
}
}
無論如何如何發送空數組?
推薦答案
最簡單的方法是更改GSON轉換器上的設置,使其序列化空值-這將根據您的需要發送"ids":[]
。
使用GsonBuilder并結合seralizeNulls()創建新的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
這篇關于改裝2發送空數組的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,