2016-06-11 65 views
3

我對端點有一些要求,但參數和返回類型不同。使用QueryMap進行改造

我用@QueryMap的參數,但我不知道怎麼寫返回類型:

我必須寫:

@GET("xxx") 
Call<List<A1>> groupList1(@QueryMap Map<String, String> options); 
@GET("xxx") 
Call<List<A2>> groupList2(@QueryMap Map<String, String> options); 
@GET("xxx") 
Call<List<A3>> groupList3(@QueryMap Map<String, String> options); 
.... 

或有一個較短的解決方案嗎?

+0

如果您以不同的方式命名這些方法並調用這些端點,會發生什麼? –

+0

該解決方案將工作,但他們只有差異參數和返回類型。我可以有更好更短的解決方案嗎? – user6123827

+0

我沒有看到實際的問題。如果您要創建單個端點,則必須按需解析數據,這會使代碼更加複雜。 –

回答

1

您可以使用JsonElement響應類型

@GET("xxx") 
    Call<JsonElement> groupList(@QueryMap Map<String, String> options); 

每一個電話,您將收到JsonElement,你可以轉換爲JsonObjectJsonArray甚至String。您可以根據您的內容對其進行解析/解密

public void onResponse(Call<JsonElement> call, Response<JsonElement> response) { 
     JsonElement jsonElement = response.body(); 
     //JsonArray array = jsonElement.getAsJsonArray(); 
     //JsonObject Obj = jsonElement .getAsJsonObject(); 
}