Abschluss-Objekt-Konstruktion nach GSON Deserialisierung
Habe ich erfolgreich begonnen, mit GSON serialisiert und de-serialisiert, eine Hierarchie von Objekten, die in meinem Android-Anwendung.
Einige der Objekte, die serialisiert werden, haben Mitglieder die muss ich mark als transient
(oder eine andere alternative GSON Anmerkungen zu verhindern, dass Sie serialisiert wird), weil Sie Referenzen auf Objekte, die ich nicht wollen, zu serialisieren, die als Teil der Ausgabe JSON-string. Diese Referenzen sind Objekte, die separat gebaut durch einige andere Mittel.
Einmal die Struktur ist de-serialisiert werden wieder in Java-Objekte, irgendwann muss ich füllen Sie diese Verweise. Ich könnte leicht tun dies vielleicht, indem Sie eine Reihe von setXXX()
Typ-Verfahren, aber bis das erledigt ist, werden diese Objekte sind in einem unvollständigen Zustand. Was ich mich daher Frage ist, ob es einen robusteren Ansatz für diese.
Möglichkeiten, die ich gedacht haben, so weit:
-
Haben die Objekte werfen
RuntimeException
(oder etwas besser geeignet), wenn Sie in einem unvollständigen Zustand; das heißt, wenn Sie aufgefordert werden, um einige Arbeit zu tun, wenn einige Initialisierungs-Methode nicht aufgerufen. -
Trennen die serializable-bits in einem separaten Daten-Modell-Objekt. In anderen Worten, nehmen Sie die Dinge, die nicht serialisiert werden. Nach GSON de-Serialisierung, Baue meine 'echte' Objekte über die Daten-Objekte in Ihrer Zusammensetzung. Dies scheint die Niederlage der Vorteile von GSON etwas.
-
Schreiben Sie eine benutzerdefinierte deserializer für GSON behandeln die speziellen Erstellung dieser Objekte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde wahrscheinlich, nehmen den zweiten Ansatz, weil ich in der Regel design für meine Anwendungen, alles, was sein muss serialisiert/deserialisiert ist wirklich einfach nur alte Daten, oder POJOs, wenn Sie bevorzugen. Wenn ich mich selbst brauchen, um anpassen/konfigurieren-Serialisierung-API zu tun, was ich will, Neige ich dazu, Sie zu vereinfachen, was wird serialisiert, so dass die Serialisierung-API muss nicht die extra-Konfigurationen.
So, wenn ich ein komplizierteres Datenmodell, Teile, die man nicht serialisiert/deserialisiert, dann habe ich daraus einen einfachen Satz von POJOs, als ein begrifflich getrennt Datenmodell zur Teilnahme an der Serialisierung/Deserialisierung. Dies bedeutet dann in der Tat erfordern einen zusätzlichen Schritt, um die Zuordnung zwischen den zwei Daten-Modelle, aber das ist in der Regel ziemlich einfach, auch.
Wenn der Dritte Ansatz bevorzugt wird, dann beachten Sie auch die Instanz-Creator-Funktion, als Sie ein weiteres nützliches Haken in das customizing der Deserialisierung.
Check-out https://github.com/julman99/gson-fire
Es ist eine Bibliothek, die ich machte, erstreckt sich Gson, Fälle zu behandeln, wie Post-Serialisierung und Post-Deserialisierung
Hat es auch viele andere Coole features, die ich brauchte, im Laufe der Zeit mit Gson.