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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage