JsonGenerator là lớp cơ sở của Jackson Streaming API, cung cấp API cấp thấp để ghi nội dung JSON. Các instance được tạo từ JsonFactory. Cách tiếp cận này hiệu quả về bộ nhớ, phù hợp cho dữ liệu lớn.
Các phương thức chính
writeStartObject()– Bắt đầu object JSONwriteFieldName(String)– Ghi tên trườngwriteString(String)– Ghi giá trị chuỗiwriteStartArray()– Bắt đầu mảngwriteEndArray()– Kết thúc mảngwriteEndObject()– Kết thúc objectclose()– Đóng generator (bắt buộc)
Ví dụ tạo JSON employee
import java.io.*;
import com.fasterxml.jackson.core.*;
public class JsonGeneratorDemo {
public static void main(String[] args) throws IOException {
JsonFactory factory = new JsonFactory();
StringWriter writer = new StringWriter();
JsonGenerator gen = factory.createGenerator(writer);
gen.useDefaultPrettyPrinter(); // format đẹp
gen.writeStartObject();
gen.writeFieldName("empId");
gen.writeString("120");
gen.writeFieldName("firstName");
gen.writeString("Minh");
gen.writeFieldName("lastName");
gen.writeString("Trần");
gen.writeFieldName("skills");
gen.writeStartArray();
gen.writeString("Java");
gen.writeString("Spring Boot");
gen.writeString("Docker");
gen.writeEndArray();
gen.writeEndObject();
gen.close();
System.out.println(writer.toString());
}
}
Kết quả
{
"empId" : "120",
"firstName" : "Minh",
"lastName" : "Trần",
"skills" : [ "Java", "Spring Boot", "Docker" ]
}
Khi nào dùng? Streaming API lý tưởng khi ghi file JSON lớn, không muốn load toàn bộ vào bộ nhớ.