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

วิธี Serialize JSON Object ด้วย JsonWriter ใช้ Object Model ใน Java

อินเทอร์เฟซ javax.json.JsonWriter ใช้เขียน JSON object หรือ array structure ไปยัง output source คลาส javax.json.JsonWriterFactory มีเมธอดสร้าง JsonWriter instances Factory instance สามารถสร้าง writer instances หลายตัวด้วยการตั้งค่าเดียวกัน เราสามารถสร้าง writers จาก output source โดยใช้เมธอด static createWriter() ของ javax.json.Json คลาส

Syntax

public static JsonWriter createWriter(Writer writer)

ตัวอย่างการใช้งาน

import java.io.StringWriter;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;

public class JsonWriterTest {
    public static void main(String[] args) {
        JsonObject jsonObj = Json.createObjectBuilder()
            .add("name", "Adithya")
            .add("age", 25)
            .add("salary", 40000)
            .add("address", 
                Json.createObjectBuilder()
                    .add("street", "Madhapur")
                    .add("city", "Hyderabad")
                    .add("zipCode", "500084")
                    .build()
            )
            .add("phoneNumber", 
                Json.createArrayBuilder()
                    .add("9959984000")
                    .add("7702144400")
                    .build()
            )
            .build();
        
        StringWriter stringWriter = new StringWriter();
        JsonWriter writer = Json.createWriter(stringWriter);
        writer.writeObject(jsonObj);
        writer.close();
        
        System.out.println(stringWriter.getBuffer().toString());
    }
}

ผลลัพธ์ (Output)

{"name":"Adithya","age":25,"salary":40000,"address":{"street":"Madhapur","city":"Hyderabad","zipCode":"500084"},"phoneNumber":["9959984000","7702144400"]}

คำอธิบาย

ตัวอย่างสาธิตการสร้าง JSON object แบบ programmatic โดยใช้ Object Model API (JsonObjectBuilder) และเขียน output ด้วย JsonWriter:

  1. สร้าง JsonObject ด้วย Json.createObjectBuilder() และ chain .add()
  2. Nested object: ใช้ Json.createObjectBuilder() ภายใน
  3. Array: ใช้ Json.createArrayBuilder() และ chain .add()
  4. เขียน output: Json.createWriter(StringWriter) → writeObject() → close()

Object Model vs Streaming API

ด้านเปรียบเทียบ Object Model (JsonObjectBuilder) Streaming API (JsonGenerator)
Memory โหลดทั้งหมดในหน่วยความจำ Streaming, ใช้หน่วยความจำน้อย
Ease of use ง่าย, fluent API ซับซ้อนกว่า, manual control
Random access ได้ (tree structure) ไม่ได้ (forward only)
Performance ช้ากว่าสำหรับข้อมูลใหญ่ เร็วกว่าสำหรับข้อมูลใหญ่

สรุป

javax.json.JsonWriter ร่วมกับ Object Model API (JsonObjectBuilder) ให้วิธีมาตรฐาน (JSR 374) ในการสร้างและเขียน JSON อย่างสะดวก เหมาะสำหรับข้อมูลขนาดเล็กถึงปานกลาง ที่ต้องการความสะดวกและ readability