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>