สามารถอ่านและเขียนไฟล์ด้วย Gson Streaming API ซึ่งทำงานแบบ Sequential Read/Write คลาสหลักคือ JsonWriter (เขียน) และ JsonReader (อ่าน) ใน Streaming API
- JsonWriter: เขียน JSON Encoded Value ลง Stream ทีละ Token รวม Literal Values (Strings, Numbers, Booleans, Nulls) และ Begin/End Delimiters ของ Objects/Arrays
- JsonReader: อ่าน JSON Encoded Value เป็น Stream of Tokens เรียงลำดับ Depth-First Order ตามที่ปรากฏใน JSON Document
เขียนไฟล์ด้วย JsonWriter
ตัวอย่าง
import java.io.*;
import com.google.gson.stream.*;
public class JsonWriterTest {
public static void main(String[] args) {
JsonWriter writer;
try {
writer = new JsonWriter(new FileWriter("input.json"));
writer.beginObject();
writer.name("name").value("Adithya");
writer.name("age").value(25);
writer.name("technologies");
writer.beginArray();
writer.value("Java");
writer.value("Scala");
writer.value("Python");
writer.endArray();
writer.endObject();
writer.close();
System.out.println("Data write to a file successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
}
ผลลัพธ์
Data write to a file successfully
ไฟล์ input.json ที่สร้าง:
{"name":"Adithya","age":25,"technologies":["Java","Scala","Python"]}
อ่านไฟล์ด้วย JsonReader
ตัวอย่าง
import java.io.*;
import com.google.gson.stream.*;
public class JsonReaderTest {
public static void main(String[] args) {
JsonReader reader;
try {
reader = new JsonReader(new FileReader("input.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("technologies")) {
reader.beginArray();
while (reader.hasNext()) {
System.out.println(reader.nextString());
}
reader.endArray();
} else {
reader.skipValue();
}
}
reader.endObject();
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ผลลัพธ์
Adithya
25
Java
Scala
Python
ข้อดีของ Streaming API: ใช้ Memory น้อย เหมาะกับ JSON ขนาดใหญ่มาก ไม่ต้องโหลดทั้งหมดเข้าหน่วยความจำ