Ich frage mich zu wissen, wie Firebase POJO-Objekt zu / von Json serialisieren / deserialisieren, verwendet es Jackson oder Gson oder eine ähnliche Bibliothek sonst.
Ich habe Probleme mit der Namenskonvention mit Firebase. Mein Modell sieht so aus:
Und das erwartete Ergebnis in Firebase sollte sein:
%Vor% mit Gson Ich kann FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES
für meinen Zweck verwenden, wie in Gson doc:
Hier ein paar Beispiele für das Formular "Java Field Name" --- & gt; "JSON-Feldname":
- einigeFeldName --- & gt; Some_field_name
_someFieldName --- & gt; _some_field_name
aStringField --- & gt; a_string_field
- aURL --- & gt; a_u_r_l
Wie kann ich mein POJO-Objekt mit bestimmten Namenskonventionen in "Firebase-Wert" umwandeln und umgekehrt, oder gibt es eine Möglichkeit, den Serialisierungs- / Deserialisierungsprozess anzupassen?
Danke!
Wenn Sie die Daten aus der Firebase-Datenbank zurücklesen, können Sie die Annotation @PropertyName
verwenden, um ein Feld zu markieren, das bei der Serialisierung / Deserialisierung umbenannt werden soll. Beispiel:
Stellen Sie sicher, dass Ihr Feld öffentlich und nicht privat ist, sonst funktioniert die Anmerkung nicht (ich glaube auch, dass Firebase Jackson verwendet, um das Objekt-Mapping unter der Haube zu handhaben, aber Sie können nicht wirklich anpassen, wie es es verwendet ).
Persönlich bevorzuge ich die explizite Kontrolle über den Serialisierungs- / Deserialisierungsprozess und mich nicht auf ein bestimmtes Framework und / oder Anmerkungen zu verlassen.
Ihre Datenklasse kann einfach wie folgt geändert werden:
%Vor%Um den Wert in Firebase zu schreiben, tun Sie einfach:
%Vor%Zum Lesen:
%Vor%Sie sind einige Vorteile mit dieser Lösung:
toMap()
und Konstruktor zu einem DataMapper (Ausschnitt darunter) Tags und Links android firebase json firebase-database