Ich benutze Gson, um Antworten von einem Server auf Android zu analysieren. Jede Antwort hat einige nutzlose (für mich) Daten, die meine Gson-Modelle verkomplizieren. Hier ist die allgemeine Hierarchie der json zurückgegeben:Mit Gson elegant verschachtelte JSON-Objekte behandeln?
response: {
date: 1406253006807,
otherUselessData1: "This is some useless data",
otherUselessData2: "This is some useless data",
usefulJsonObject: { <---- This is really the object that I care about
}
}
Alles über oder auf dem gleichen Niveau wie usefulJsonObject
konnte ich wirklich verzichten. Die nutzlosen Daten werden für jede Anforderung zurückgegeben, und die tatsächliche Antwort ist darunter als usefulJsonObject
eingebettet. Das wäre kein großes Problem, aber es ist wirklich meine gson Modellobjekte überladen.
Zum Beispiel: Sagen wir, ich habe 3 Anfragen, die ich machen kann: A, B, und C. Für jede Antwort muss ich mindestens 3 benutzerdefinierte Klassen erstellen.
public class ResponseA {
@SerializedName("response") ResponseObjectA responseObject;
public static class ResponseObjectA {
@SerializedName("usefulJsonObject") UsefulObjectA usefulObject;
}
public static class UsefulObjectA {
}
}
Ich habe ein paar Lösungen ausprobiert, aber ich habe nichts elegant gefunden, die nicht einen zusätzlichen Schritt zu meinem Prozess hinzufügen würden. Ich verwende Retrofit, um meine HTTP-Anfragen zu machen, und es ist wirklich nett, dass es mir das vollständig geparste Gson-Objekt zurückgibt. Ich habe über andere Lösungen nachgedacht wie das nützliche Objekt einfach ein JsonElement zu sein und dann einen zweiten gson Call zu machen, nachdem der erste zurückkommt. Wiederum nicht ideal.
Ich wollte nur wissen, ob ich etwas verpasst habe. Sicher bin ich nicht der Einzige, dem so etwas begegnet ist, und deshalb dachte ich, ich würde fragen, wie andere mit so etwas umgehen würden.
Willst du sagen, dass 'nützlichJsonObject' dynamisch ist? Ihr Wert könnte alles sein, aber Sie brauchen es? –
@StiriosDelimanolis Nein, es hat immer den gleichen Schlüssel. In diesem Beispiel würde es also immer "usableJsonObject" heißen. – spierce7
Was ist mit dem Wert dieses Schlüssel-Wert-Paares? –