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