Speichern Sie Daten mit Gson in einer JSON-Datei

1. Übersicht

Gson ist eine Java-Bibliothek, mit der wir Java-Objekte in eine JSON-Darstellung konvertieren können. Wir können es auch umgekehrt verwenden, um eine JSON-Zeichenfolge in ein äquivalentes Java-Objekt zu konvertieren.

In diesem kurzen Tutorial erfahren Sie, wie Sie verschiedene Java-Datentypen als JSON in einer Datei speichern.

2. Maven-Abhängigkeiten

Zunächst müssen wir die Gson-Abhängigkeit in pom.xml hinzufügen . Dies ist in Maven Central verfügbar:

 com.google.code.gson gson 2.8.5 

3. Speichern von Daten in einer JSON-Datei

Wir verwenden die toJson-Methode (Object src, Appendable Writer) aus der Gson- Klasse, um einen Java-Datentyp in JSON zu konvertieren und in einer Datei zu speichern. Der Gson () -Konstruktor erstellt ein Gson- Objekt mit der Standardkonfiguration:

Gson gson = new Gson();

Jetzt können wir toJson () aufrufen , um Java-Objekte zu konvertieren und zu speichern.

Lassen Sie uns einige Beispiele mit verschiedenen Datentypen in Java untersuchen.

3.1. Primitive

Das Speichern von Grundelementen in einer JSON-Datei ist mit GSON ziemlich einfach:

gson.toJson(123.45, new FileWriter(filePath));

Hier bezeichnet filePath den Speicherort der Datei. Die Dateiausgabe enthält einfach den primitiven Wert:

123.45

3.2. Benutzerdefinierte Objekte

Ebenso können wir Objekte als JSON speichern.

Zuerst erstellen wir eine einfache Benutzerklasse :

public class User { private int id; private String name; private transient String nationality; public User(int id, String name, String nationality) { this.id = id; this.name = name; this.nationality = nationality; } public User(int id, String name) { this(id, name, null); } }

Jetzt speichern wir ein Benutzerobjekt als JSON:

User user = new User(1, "Tom Smith", "American"); gson.toJson(user, new FileWriter(filePath));

Die Dateiausgabe lautet:

{"id":1,"name":"Tom"}

Wenn ein Feld als vorübergehend markiert ist , wird es standardmäßig ignoriert und ist nicht in der JSON-Serialisierung oder -Deserialisierung enthalten. Infolgedessen ist das Nationalitätsfeld in der JSON-Ausgabe nicht vorhanden.

Außerdem lässt Gson während der Serialisierung standardmäßig Nullfelder weg. Wenn wir also dieses Beispiel betrachten:

gson.toJson(new User(1, null, "Unknown"), new FileWriter(filePath));

Die Dateiausgabe lautet:

{"id":1}

Wir werden später sehen, wie Nullfelder in die Serialisierung einbezogen werden.

3.3. Sammlungen

Wir können eine Sammlung von Objekten auf ähnliche Weise speichern:

User[] users = new User[] { new User(1, "Mike"), new User(2, "Tom") }; gson.toJson(users, new FileWriter(filePath));

In diesem Fall ist die Dateiausgabe ein Array von Benutzerobjekten :

[{"id":1,"name":"Mike"},{"id":2,"name":"Tom"}]

4. Verwenden von GsonBuilder

Um die Standardkonfigurationseinstellungen von Gson zu optimieren, können wir die GsonBuilder- Klasse verwenden.

Diese Klasse folgt dem Builder-Muster und wird normalerweise verwendet, indem zuerst verschiedene Konfigurationsmethoden aufgerufen werden, um die gewünschten Optionen festzulegen, und schließlich die Methode create () aufgerufen wird:

Gson gson = new GsonBuilder() .setPrettyPrinting() .create();

Hier setzen wir die hübsche Druckoption, die standardmäßig auf false gesetzt ist . Um Nullwerte in die Serialisierung einzubeziehen, können wir serializeNulls () aufrufen . Die verfügbaren Optionen sind hier aufgelistet.

5. Schlussfolgerung

In diesem kurzen Artikel haben wir verstanden, wie verschiedene Java-Datentypen in eine JSON-Datei serialisiert werden. Weitere Artikel zu JSON finden Sie in unseren anderen Tutorials zu diesem Thema.

Wie immer sind die Codefragmente in diesem GitHub-Repository verfügbar.