Gson Streaming pour lire et écrire du JSON

Gson - Lire et écrire JSON sous forme de flux

Depuis la version 1.6 de Gson, deux nouvelles classesJsonReader etJsonWriter sont introduites pour fournir un traitement en continu sur les données JSON. Lisez ceGson streaming documentation pour comprendre quels sont les avantages de son utilisation.

  • JsonWriter - Ecrit JSON sous forme de flux.

  • JsonReader - Lit JSON en tant que flux.

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();
        }

    }

}

Sortie

c:\projects\user.json

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

2. JsonReader

Token
En mode streaming, chaque donnée JSON est considérée comme un jeton individuel. Lorsque vous utilisezJsonReader pour le traiter, chaque jeton est traité séquentiellement. Par exemple,

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

  • Jeton 2 = url

  • Jeton 3 = www.example.com

  • Jeton 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();
        }

    }
}

Sortie

example
29
msg 1
msg 2
msg 3

Note
En savoir plusGson examples