Gson – Getting Started with Java-JSON Serialization & Deserialization

Nach der Veröffentlichung von über 500 Blogbeiträgen haben wir genug Feedback gesammelt, dass viele Entwickler eine ausführliche Einführung in Googles Gson lieben würden. Gson ist eine sehr leistungsfähige Bibliothek, um Datenstrukturen, die als JSON dargestellt werden, Java-Objekten zuzuordnen. Natürlich unterstützt es auch umgekehrt und kann eine entsprechende JSON-Darstellung Ihrer Java-Objekte erstellen.

Wenn Sie daran interessiert sind, wohin diese Serie geht, schauen Sie sich unsere Serienübersicht an:

Übersicht der Gson-Serie

>

Gson-Abhängigkeit

Dieser Leitfaden wird praktisch sein und in einer Minute mit einer Serialisierung beginnen. Da viele unserer Leser Android-Entwickler sind, werden wir es für Sie anpassen, aber Gson kann in jeder Java-Umgebung verwendet werden. Bevor wir beginnen können, müssen wir die Gson-Bibliothek in unser Projekt ziehen. Zum Zeitpunkt des Schreibens ist die neueste Version 2.8.5. Wenn Sie Gradle verwenden, fügen Sie die folgende Zeile hinzu:

implementation 'com.google.code.gson:gson:2.8.5' 

Wenn Sie Maven verwenden, können Sie die folgende Abhängigkeit hinzufügen:

<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies> 

Für die Armen, die das Abhängigkeitsmanagementsystem verwenden, können Sie das JAR im offiziellen GitHub-Repository herunterladen.

Grundlagen der Java-JSON-Serialisierung

Also machen wir eine Serialisierung! Serialisierung im Kontext von Gson bedeutet, ein Java-Objekt seiner JSON-Darstellung zuzuordnen. In den nächsten Tutorials werden unsere Daten komplexer, aber im Moment beginnen wir mit einem sehr einfachen UserSimple -Objekt:

public class UserSimple { String name; String email; int age; boolean isDeveloper;}

Das Benutzerobjekt hat vier Eigenschaften:

  • Das name des Benutzers ist ein String-Objekt
  • Das email des Benutzers ist ebenfalls ein String-Objekt
  • Das age des Benutzers ist eine Ganzzahl, dh das Alter wird in Jahren gespeichert (z. B. 26 und nicht der genaue Geburtstag!)
  • Endlich ein boolesches Flag isDeveloper

Unsere Android- oder Java-Anwendung muss ein UserSimple -Objekt in seine JSON-Darstellung konvertieren. Angenommen, wir behalten die Mitgliedsnamen bei, würden wir einen solchen JSON für Norman, den Autor dieses Blogbeitrags, erwarten:

{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}

Mal sehen, wie wir die Konvertierung mit Gson durchführen können. Zunächst müssen wir ein Java-Objekt für Norman erstellen:

UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);

Um die Serialisierung durchzuführen, benötigen wir ein Gson -Objekt, das die Konvertierung übernimmt. Wir können einfach den Konstruktor verwenden:

Gson gson = new Gson(); 

Als nächstes müssen wir die Funktion toJson() aufrufen und das UserSimple -Objekt übergeben:

String userJson = gson.toJson(userObject); 

Das userJson -Objekt enthält den folgenden Wert:

{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}

Gson hat die Reihenfolge der Eigenschaften geändert (in alphabetisch), aber der Inhalt ist identisch! Beachten Sie, wie Gson die Typen respektierte. String-Werte wurden in "" , während Integer-Werte keinen Umbruch hatten. Wir mussten nicht mit JSON Objekten herumspielen oder einzelne Mitglieder kopieren. Ein einziger Aufruf von Gson reichte aus, um das gesamte Objekt abzubilden. Dies ist äußerst praktisch, wenn wir mit komplexen Datenstrukturen arbeiten. Aber bevor wir zu tief gehen, testen wir die andere Richtung. Kann Gson ein Java-Objekt aus dem obigen JSON erstellen?

Grundlagen der JSON-Java-Deserialisierung

Zunächst müssen wir einen String erstellen, der den oben genannten JSON enthält:

String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}"; 

Wir haben " in ' geändert, um zu vermeiden, dass Tonnen von \" entkommen. Trotzdem funktioniert es so oder so. Der nächste Schritt besteht, wie Sie wahrscheinlich vermutet haben, darin, eine Gson-Instanz zu erstellen:

Gson gson = new Gson(); 

Schließlich müssen wir von einem JSON zu einem Java-Objekt mit fromJson():

UserSimple userObject = gson.fromJson(userJson, UserSimple.class); 

Beachten Sie, wie wir das erwartete Java-Objekt als zweiten Parameter übergeben müssen. Andernfalls weiß Gson nicht, worauf es den JSON zuordnen soll. Es ist kein Zauberer!

Wenn wir einen Debugger anhängen und das resultierende userObject überprüfen, zeigt es uns, dass Gson alle Eigenschaften erfolgreich korrekt zugeordnet hat:

 Benutzerobjekt

In diesem Beitrag Erste Schritte haben Sie die grundlegende Verwendung von Gson gesehen. Wir haben gezeigt, wie einfach es ist, JSON-Daten von und zu JSON-Daten zuzuordnen. Wir sind sicher, dass Sie im Moment eine Menge Fragen haben:

  • Benötigen die Java-Modellklassen einen Konstruktor / Getter / Setter?
  • Können die Java-Modellfelder privat sein?
  • Wie werden Nullwerte behandelt?
  • Was ist, wenn die Java-Klasse andere Mitgliedsnamen als die JSON hat?
  • So (de) serialisieren Sie Arrays / Listen von Objekten
  • So (de) serialisieren Sie verschachtelte Objekte
  • Behält Gson während der Ausführung von .fromJson() einen definierten Standardwert für eine Klasseneigenschaft bei und es ist kein Wert für diese Eigenschaft in JSON verfügbar?

Keine Sorge, wir werden sie alle in den kommenden Wochen erreichen. Wenn Sie ein bestimmtes Thema im Sinn haben, lassen Sie es uns in den Kommentaren oder auf Twitter @futurestud_io wissen.

Lass es rocken & viel Spaß beim Codieren!

Noch kein Experte? Holen Sie sich unser Gson-Buch!

 Gson Buch

Die Zuordnung von JSON zu Java-Objekten (und umgekehrt) stammt aus den 90er Jahren. Gson ist die moderne Lösung, um mit minimalem Aufwand automatisch zwischen Java und JSON abzubilden.

Sie müssen nur wissen wie! Erfahren Sie jedes Detail über die Fähigkeiten von Gson, Konfiguration & Anpassung in unserem Buch.

Unser Buch enthält alles, was Sie über Gson wissen müssen. Schätzen Sie Ihre Zeit und sparen Sie sich endlose Stunden Google-Suche, um Ihre Probleme schnell zu beheben. Investieren Sie im Vorfeld in Ihr Wissen und in eine saubere Lösung. Wir machen Sie zum Gson-Experten in Ihrem Team.

Enthält eine Arbeitsmappe!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

More: