Behandeln Sie verschiedene JSON-Antworttypen vom selben Endpunkt in RetroFit
Ich brauche Hilfe
Ich habe einen Endpunkt, der einen Parameter annimmt. Abhängig von diesem Parameter wird dasJSON
zurückgegeben wird völlig anders sein.
Ist es möglich fürRetroFit
um damit umzugehen?
Beispielsweise
http://myserver.com/all/<parameter>
where-Parameter istBUS
oderBICYCLE
sowie später weitere hinzufügen.
Ein BeispielBUS
Anfrage wird zurückgegeben:
"stops": [{
"Lat": "....",
"Lng": "....",
"Name": "Main Street",
"Route": "",
"StopNumber": "2"
}]
DasBICYCLE
endpoint gibt Folgendes zurück:
"stops": [{
"address": "Town Centre",
"lat": "....",
"lng": "....",
"number": "63",
"open": "1"
}]
Je nach dem Abschnitt meiner Android-App, in dem sich der Benutzer befindet, möchte ich einen anderen Parameter senden und mit demselben Aufruf damit umgehen können.
Ich habe darüber nachgedacht, eine übergeordnete Klasse mit dem Namen @ zu verwendeAllTypes
dass jede der anderen Klassen erweitert wird und dann mein @ gesetzt wiRetrofit
Signatur anrufen:
@GET("/all/{type}")
void getAll(@Path("type") String type, Callback<AllTypes> callback);
Aber ich bin nicht sicher, obRetrofit
kann automatisch die richtige untergeordnete Klasse für @ auswählAllTypes
basierend auf dem zurückgegebenenJSON
oder sogar der übergebene Parametertype
.
Weiß jemand, wie man das macht? Wenn nicht, muss ich nur mehrere verschiedene Methoden mit verschiedenen Rückruftypen erstellen.
Vielen Dank