Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Serialize JSON object với JsonWriter dùng Object Model (javax.json)

javax.json.JsonWriter ghi JSON object/array ra output source (Writer, OutputStream). Tạo qua Json.createWriter() hoặc JsonWriterFactory.

Cú pháp

public static JsonWriter createWriter(Writer writer)

Ví dụ: Build JsonObject bằng JsonObjectBuilder rồi write

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

public class JsonWriterTest {
    public static void main(String[] args) {
        // Build JsonObject dùng Object Model API (Builder pattern)
        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")
            )
            .add("phoneNumber", Json.createArrayBuilder()
                .add("9959984000")
                .add("7702144400")
            )
            .build();
        
        // Write ra String
        StringWriter stringWriter = new StringWriter();
        JsonWriter writer = Json.createWriter(stringWriter);
        writer.writeObject(jsonObj);
        writer.close();
        
        System.out.println(stringWriter.toString());
    }
}

Output

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

Các cách tạo JsonWriter

  • Json.createWriter(Writer) - ghi ra Writer.
  • Json.createWriter(OutputStream) - ghi ra OutputStream (auto UTF-8).
  • JsonWriterFactory.createWriter(...) - reuse config cho multiple writers.

Streaming API (Alternative trong javax.json)

// Streaming write - memory efficient cho large JSON
JsonGenerator gen = Json.createGenerator(outputStream);
gen.writeStartObject()
   .write("name", "Adithya")
   .write("age", 25)
   .writeEndObject()
   .close();

So sánh Object Model vs Streaming

Đặc điểm Object Model (JsonObjectBuilder) Streaming (JsonGenerator)
Memory Load toàn bộ tree vào memory Write trực tiếp, low memory
API Builder pattern, dễ đọc Callback style, phức tạp hơn
Phù hợp JSON nhỏ/vừa, cần manipulate tree JSON lớn, streaming, performance critical

Dependency (Jakarta EE 9+)

<dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.json-api</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>jakarta.json</artifactId>
    <version>2.0.1</version>
</dependency>