Namenskonvention mit Firebase-Serialisierung / Deserialisierung?

8

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:

%Vor%

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!

    
Khang .NT 19.11.2016, 08:10
quelle

2 Antworten

13

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:

%Vor%

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 ).

    
crymson 22.11.2016 01:55
quelle
4

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:

  • Es wird keine Annahme zum zugrundeliegenden json-Framework
  • gemacht
  • Sie müssen keine Anmerkungen verwenden
  • Sie können Ihr Objektmodell noch weiter von Ihrem Json-Modell entkoppeln, indem Sie die Methoden toMap() und Konstruktor zu einem DataMapper (Ausschnitt darunter)
  • externalisieren
%Vor%     
Benoit 28.11.2016 11:40
quelle