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