2016-06-11 67 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(); 
}