Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

อ่าน/เขียนไฟล์ ด้วย Gson Streaming API ใน Java

สามารถอ่านและเขียนไฟล์ด้วย 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 ขนาดใหญ่มาก ไม่ต้องโหลดทั้งหมดเข้าหน่วยความจำ