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

เราจะอ่านและเขียนไฟล์โดยใช้ Gson สตรีมมิ่ง API ใน Java ได้อย่างไร


เราสามารถอ่านและเขียนไฟล์โดยใช้ Gson streaming API และเป็นไปตามมาตรฐานการอ่านและเขียนตามลำดับ JsonWriter และ JsonReader เป็นคลาสหลักที่สร้างขึ้นสำหรับการสตรีมการเขียนและอ่านใน Streaming API . JsonWriter เขียนค่าที่เข้ารหัส JSON ไปยังสตรีม ครั้งละหนึ่งโทเค็น สตรีมมีทั้งค่าตามตัวอักษร (สตริง ตัวเลข บูลีน และค่าว่าง ) เช่นเดียวกับ เริ่มต้น และ จบ ตัวคั่น ของอ็อบเจ็กต์และอาร์เรย์ และ JsonReader อ่านค่าที่เข้ารหัส JSON เป็นสตรีมของโทเค็น สตรีมนี้มีทั้ง ตัวอักษร คุณค่า (s สตริง ตัวเลข บูลีน และค่าว่าง) เช่นเดียวกับ เริ่มต้น และ สิ้นสุดตัวคั่น ของวัตถุและอาร์เรย์ โทเค็นถูกสำรวจในลำดับเชิงลึกก่อน ลำดับเดียวกับที่ปรากฏในเอกสาร JSON

เขียนไปยังไฟล์โดยใช้ 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


อ่านไฟล์โดยใช้ 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