2016-06-11 2 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

당신은 모든 당신이 JsonObject 또는 JsonArray 또는 String로 변환 할 수 있습니다 JsonElement을 받게됩니다 호출 JsonElement 응답 유형

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

를 사용할 수 있습니다. 콘텐츠에 따라 구문 분석/역 합성을 수행 할 수 있습니다.

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