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