2016-06-11 4 views
3

Ich habe einige Anfrage mit dem gleichen Endpunkt aber Parameter und Rückgabetyp sind unterschiedlich.Nachrüstung mit QueryMap

I verwendet @QueryMap für den Parameter, aber ich weiß nicht, wie der Rückgabetyp schreiben:

Muß ich schreiben:

@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); 
.... 

oder gibt es eine kürzere Lösung?

+0

Was passiert, wenn Sie diese Methoden anders benennen und diese Endpunkte aufrufen? –

+0

Diese Lösung funktioniert, aber sie nur Differenzparameter und Rückgabetyp. Kann ich eine bessere und kürzere Lösung haben? – user6123827

+0

Ich sehe das Problem tatsächlich nicht. Wenn Sie einen einzelnen Endpunkt erstellen würden, müssten Sie Daten nach Bedarf analysieren, was den Code noch komplizierter machen würde. –

Antwort

1

können Sie verwenden JsonElement Antworttyp

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

Jeder rufen Sie JsonElement erhalten, die Sie JsonObject oder JsonArray oder sogar String umwandeln kann. Sie können es nach Ihrem Inhalt parsen/desealisieren.

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