Ich verwende Retrofit, um einen API-Anruf zu tätigen. Das Top-Level-Objekt wird in Abhängigkeit von den Abfrageparametern der Anfrage benannt. Zum Beispiel wird eine Anforderung wie folgt aus:Nachrüstung, JSON-Objekt auf oberster Ebene ändert den Namen
api.somewebsite.com/1.0/mix_info?mix_id=69
gibt eine Antwort wie folgt aus:
{"69":{
"mix_id":"69",
"mix_title":"A Title",
"mix_file":"https:example.com/mp3",
"mix_genres":"House,Pop",
"mix_dj_id":"57",
"number_votes":"390",
"station":"1"
}
}
Heres sowie ein screenie dass irgendwie zeigt das Format: http://prnt.sc/axltcd
Grundsätzlich je auf die Zahl in die URL übergeben mix_id=
Abfrage wird der Name der obersten Ebene Json-Objekt in der Antwort zurückgegeben.
ich war in der Lage, etwas zu hacken zusammen, die irgendwie funktioniert:
ich ein Modell Response-Klasse haben, die eine Membervariable hat, dass die Top-Level-Objekt ist, und ich verwende Retrofit des @SerializedName („69“) zu explicity setze den Namen. Dies funktioniert natürlich nur für eine Anfrage mit der ID 69, ansonsten gibt die Antwort ein Null-Objekt zurück.
Es sieht wie folgt aus:
public class Response {
@SerializedName("69")
private _69 _69;
}
Wie dem auch sei, ich bin nach einer Möglichkeit, richtig diese seltsam formatierte Antworten zu behandeln. Wie würde das gemacht werden?
Was ist mit Serialisierung einer HashMap? – plalx
..was davon – Orbit
Gut 'hashMap.put ('yourKey', yourData); serialisieren (hashMap) ' – plalx