อินเทอร์เฟซ 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:
- สร้าง JsonObject ด้วย Json.createObjectBuilder() และ chain .add()
- Nested object: ใช้ Json.createObjectBuilder() ภายใน
- Array: ใช้ Json.createArrayBuilder() และ chain .add()
- เขียน 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