JsonGenerator เป็นคลาสฐานที่กำหนด Public API สำหรับเขียนเนื้อหา JSON อินสแตนซ์ถูกสร้างผ่านเมธอดโฟรี่ของอินสแตนซ์ JsonFactory เมื่อได้ JsonGenerator จากโฟรี่แล้ว สามารถใช้เมธอดต่างๆ ได้ดังนี้:
- writeStartObject() - เขียนเครื่องหมายเริ่มต้นของ JSON Object
- writeFieldName() - เขียนชื่อฟิลด์
- writeString() - เขียนค่าสตริง
- writeStartArray() - เขียนเครื่องหมายเริ่มต้นของ Array
- writeEndObject() - เขียนเครื่องหมายปิดของ JSON Object
ไวยากรณ์
public abstract class JsonGenerator extends Object implements Closeable, Flushable, Versioned
ตัวอย่างโค้ด
import java.io.*;
import com.fasterxml.jackson.core.*;
public class JsonGeneratorTest {
public static void main(String[] args) throws IOException {
JsonFactory factory = new JsonFactory();
StringWriter jsonObjectWriter = new StringWriter();
JsonGenerator generator = factory.createGenerator(jsonObjectWriter);
generator.useDefaultPrettyPrinter(); // pretty print JSON
generator.writeStartObject();
generator.writeFieldName("empid");
generator.writeString("120");
generator.writeFieldName("firstName");
generator.writeString("Ravi");
generator.writeFieldName("lastName");
generator.writeString("Chandra");
generator.writeFieldName("technologies");
generator.writeStartArray();
generator.writeString("SAP");
generator.writeString("Java");
generator.writeString("Selenium");
generator.writeEndArray();
generator.writeEndObject();
generator.close(); // ปิด generator
System.out.println(jsonObjectWriter.toString());
}
}
ผลลัพธ์
{
"empid" : "120",
"firstName" : "Ravi",
"lastName" : "Chandra",
"technologies" : [ "SAP", "Java", "Selenium" ]
}
ข้อดีของ JsonGenerator
JsonGenerator ใช้หน่วยความจำน้อยและเร็วกว่า ObjectMapper สำหรับการสร้าง JSON ขนาดใหญ่ เนื่องจากเขียนแบบ Streaming โดยไม่ต้องโหลดทั้งหมดเข้าหน่วยความจำ