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