Gson Streaming zum Lesen und Schreiben von JSON

Gson - JSON als Stream lesen und schreiben

Seit Gson Version 1.6 wurden zwei neue KlassenJsonReader undJsonWriter eingeführt, um die Streaming-Verarbeitung für JSON-Daten bereitzustellen. Lesen Sie dieseGson streaming documentation, um zu verstehen, welche Vorteile die Verwendung bietet.

  • JsonWriter - Schreiben Sie JSON als Stream.

  • JsonReader - JSON als Stream lesen.

1. JsonWriter

GsonExample1.java

package com.example;

import com.google.gson.stream.JsonWriter;

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

public class GsonExample1 {

    public static void main(String[] args) {

        try (JsonWriter writer = new JsonWriter(new FileWriter("c:\\projects\\user.json"))) {

            writer.beginObject();                   // {
            writer.name("name").value("example");    // "name" : "example"
            writer.name("age").value(29);           // "age" : 29

            writer.name("messages");                // "messages" :
            writer.beginArray();                    // [
            writer.value("msg 1");                  // "msg 1"
            writer.value("msg 2");                  // "msg 2"
            writer.value("msg 3");                  // "msg 3"
            writer.endArray();                      // ]

            writer.endObject();                     // }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

Ausgabe

c:\projects\user.json

{"name":"example","age":29,"messages":["msg 1","msg 2","msg 3"]}

2. JsonReader

Token
Im Streaming-Modus werden alle JSON-Daten als einzelnes Token betrachtet. Wenn SieJsonReader verwenden, um es zu verarbeiten, wird jedes Token nacheinander verarbeitet. Zum Beispiel,

{
    "url":"www.example.com"
}
  • Token 1 = \ {

  • Token 2 = URL

  • Token 3 = www.example.com

  • Token 4 =}

GsonExample2.java

package com.example;

import com.google.gson.stream.JsonReader;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class GsonExample2 {

    public static void main(String[] args) {

        try (JsonReader reader = new JsonReader(new FileReader("c:\\projects\\user.json"))) {

            reader.beginObject();

            while (reader.hasNext()) {

                String name = reader.nextName();

                if (name.equals("name")) {

                    System.out.println(reader.nextString());

                } else if (name.equals("age")) {

                    System.out.println(reader.nextInt());

                } else if (name.equals("messages")) {

                    // read array
                    reader.beginArray();

                    while (reader.hasNext()) {
                        System.out.println(reader.nextString());
                    }

                    reader.endArray();

                } else {
                    reader.skipValue(); //avoid some unhandle events
                }
            }

            reader.endObject();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

Ausgabe

example
29
msg 1
msg 2
msg 3

Note
Lesen Sie mehrGson examples