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

วิธีอัปเดต JSON Data ที่มีอยู่ด้วย javax.json API ใน Java

อินเทอร์เฟซ JsonBuilderFactory เป็น factory สำหรับสร้าง instance ของ JsonObjectBuilder และ JsonObjectBuilder เป็น builder สำหรับสร้าง JsonObject models จากศูนย์ อินเทอร์เฟซนี้ initialize empty JSON object model และให้เมธอดเพิ่ม name/value pairs ลงใน object model และคืนค่า resulting object เราสามารถสร้าง JsonObjectBuilder instance ที่ใช้สร้าง JsonObject ได้ด้วยเมธอด createObjectBuilder()

Syntax

JsonObjectBuilder createObjectBuilder()

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

import java.io.*;
import javax.json.*;

public class UpdateExistingJsonTest {
    public static void main(String[] args) throws Exception {
        String jsonString = "{\"id\":\"115\", \"name\":\"Raja\", \"address\":[{\"area\":\"Madhapur\", \"city\":\"Hyderabad\"}]}";
        StringReader reader = new StringReader(jsonString);
        JsonReader jsonReader = Json.createReader(reader);
        
        System.out.println("Existing JSON: \n" + jsonString);
        
        StringWriter writer = new StringWriter();
        JsonWriter jsonWriter = Json.createWriter(writer);
        
        JsonObject jsonObject = jsonReader.readObject();
        JsonBuilderFactory jsonBuilderFactory = Json.createBuilderFactory(null);
        JsonObjectBuilder jsonObjectBuilder = jsonBuilderFactory.createObjectBuilder();
        
        // คัดลอกฟิลด์เดิมทั้งหมด
        for (String key : jsonObject.keySet()) {
            jsonObjectBuilder.add(key, jsonObject.get(key));
        }
        
        // เพิ่มฟิลด์ใหม่
        jsonObjectBuilder.add("Contact Number", "9959984000");
        jsonObjectBuilder.add("Country", "India");
        
        jsonObject = jsonObjectBuilder.build();
        jsonWriter.writeObject(jsonObject);
        
        System.out.println("new JSON: \n" + jsonObject);
    }
}

ผลลัพธ์ (Output)

Existing JSON:
{"id":"115", "name":"Raja", "address":[{"area":"Madhapur", "city":"Hyderabad"}]}

new JSON:
{"id":"115","name":"Raja","address":[{"area":"Madhapur","city":"Hyderabad"}],"Contact Number":"9959984000","Country":"India"}

คำอธิบายขั้นตอน

  1. Parse JSON string เดิมเป็น JsonObject ด้วย JsonReader
  2. สร้าง JsonObjectBuilder ใหม่จาก JsonBuilderFactory
  3. Loop คัดลอกทุก key/value จาก object เดิมไป builder ใหม่
  4. เพิ่มฟิลด์ใหม่ด้วย builder.add()
  5. Build กลับเป็น JsonObject และเขียน output

ข้อดีของ Object Model API (javax.json)

  • Immutable - JsonObject ไม่สามารถแก้ไขได้ ต้องสร้างใหม่ผ่าน Builder
  • Thread-safe
  • Standard API (JSR 374) - ไม่ผูก vendor library
  • Streaming และ Object Model ทั้งคู่

สรุป

javax.json API ให้วิธีมาตรฐานในการอ่าน แก้ไข และเขียน JSON ผ่าน Object Model (JsonObject/JsonArray) และ Builder pattern เหมาะสำหรับแอปพลิเคชันที่ต้องการ standard API และ immutability