Speichern Sie Daten mit Gson in einer JSON-Datei

Speichern Sie Daten in einer JSON-Datei mit Gson

1. Überblick

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 einen JSON-String 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 inpom.xml hinzufügen. Dies ist inMaven Central verfügbar:


    com.google.code.gson
    gson
    2.8.5

3. Speichern von Daten in einer JSON-Datei

Wir verwenden dietoJson(Object src, Appendable writer) -Smethod aus derGson-Klasse, um einen Java-Datentyp in JSON zu konvertieren und in einer Datei zu speichern. Der KonstruktorGson()erstellt ein ObjektGsonmit der Standardkonfiguration:

Gson gson = new Gson();

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

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

3.1. Primitive

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

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

Hier bezeichnetfilePath den Speicherort der Datei. Die Dateiausgabe enthält einfach den Grundwert:

123.45

3.2. Benutzerdefinierte Objekte

Ebenso können wir Objekte als JSON speichern.

Zuerst erstellen wir eine einfacheUser-Klasse:

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 dasUser-Objekt als JSON:

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

Die Dateiausgabe wird sein:

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

Wenn ein Feld mittransient markiert ist, wird es standardmäßig ignoriert und ist nicht in der JSON-Serialisierung oder -Deserialisierung enthalten. Infolgedessen ist das Feldnationalityin der JSON-Ausgabe nicht vorhanden.

Standardmäßig lässt Gson während der Serialisierung auch Nullfelder aus. Also, wenn wir dieses Beispiel betrachten:

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

Die Dateiausgabe wird sein:

{"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 vonUser Objekten:

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

4. Verwenden vonGsonBuilder

Um die Standardkonfigurationseinstellungen von Gson zu optimieren, können wir die KlasseGsonBuilderverwenden.

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 Methodecreate()aufgerufen wird:

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

Hier stellen wir die hübsche Druckoption ein, die standardmäßig auffalse eingestellt ist. Um Nullwerte in die Serialisierung einzubeziehen, können wir in ähnlicher WeiseserializeNulls() aufrufen. Die verfügbaren Optionen sind inhere aufgeführt.

5. Fazit

In diesem kurzen Artikel wird erläutert, wie verschiedene Java-Datentypen in eine JSON-Datei serialisiert werden. Um verschiedene Artikel zu JSON zu lesen, werfen Sie einen Blick aufour other tutorials zu diesem Thema.

Wie immer sind die Codefragmente inthis GitHub repository verfügbar.