Daten im Jason-Format in eine Datei schreiben.

Mit Hilfe eines JsonWriter- und eines FileWriter-Objektes können Objekte und Arrays im Json-Format zum Datenaustausch in eine Datei geschrieben werden.

Es existieren mehrere Möglichkeiten, um in Java mit Json zu arbeiten. Das hier gezeigte Beispiel bedient sich des Paketes javax.json. Das Paket gehört nicht zum Standardumfang des SDK sondern muss gesondert heruntergeladen und in den Classpath des Projektes eingebunden werden. Der Download kann z.B. unter http://repo1.maven.org/maven2/org/glassfish/javax.json/1.0-b06/javax.json-1.0-b06.jar erfolgen.

Im Beispiel wird als erstes ein JasonObjectBuilder-Objekt erzeugt, dem in der Folge zunächst drei Einträge hinzugefügt werden. Die Einträge bestehen aus jeweils zwei Werten, einem Schlüssel als String und einem Wert, der bei den ersten beiden Einträgen ebenfalls ein String und beim dritten ein Integer ist.
Im darauf folgenden Quelltextbereich wird deutlich, wie ein Array erzeugt und dies dann ebenfalls dem Builder hinzugefügt werden kann.
Hier muss zunächst ein Objekt vom Typ JsonArrayBuilder erzeugt werden. Pro Eintrag wird nun wiederum ein JsonObjectBuilder erzeugt, dem die Daten hinzugefügt werden und der anschließend dem JsonArrayBuilder angefügt wird. Das JasonArrayBuilder-Objekt wird schließlich in das oberste JasonObjectBuilder-Objekt eingefügt.
Bevor das JsonObject über die Methode build() erstellt wird, wird noch demonstriert, dass auch boolsche Werte abgelegt werden können.

import java.io.FileWriter;
import java.io.IOException;

import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;

public class WriteJson {

    public static void main(String[] args) {
        JsonObjectBuilder builder = Json.createObjectBuilder();
        builder.add("vorname", "Paul");
        builder.add("nachname", "Schmitz");
        builder.add("alter", 14);

        JsonArrayBuilder arrb = Json.createArrayBuilder();

        JsonObjectBuilder job = Json.createObjectBuilder();
        job.add("stil", "rock");
        job.add("band", "U2");
        arrb.add(job);

        job = Json.createObjectBuilder();
        job.add("stil", "metal");
        job.add("band", "Black Sabbath");
        arrb.add(job);

        builder.add("musik", arrb);
        builder.add("hungrig", true);
        JsonObject jo = builder.build();

        try {
            FileWriter fw = new FileWriter("test.txt");
            JsonWriter jsonWriter = Json.createWriter(fw);
            jsonWriter.writeObject(jo);
            jsonWriter.close();
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Das Speichern in einer Datei erfolgt mittels eines JsonWriter, dem als Parameter ein FileWriter mitgegeben wird. Beide Writer müssen nach getaner Arbeit natürlich geschlossen werden.

Die in der Datei gespeicherten Daten erscheinen anschließend in der folgenden Form:

{"vorname":"Paul","nachname":"Schmitz","alter":14,"musik":[{"stil":"rock","band":"U2"},{"stil":"metal","band":"Black Sabbath"}],"hungrig":true}