Java에서 JsonGenerator 인터페이스를 사용하면 JSON 데이터를 스트리밍(streaming) 방식으로 출력 소스에 효율적으로 기록할 수 있습니다. 특히 writeStartArray() 메서드를 활용하면 JSON 배열을 손쉽게 생성할 수 있는데, 이 메서드는 현재 객체 컨텍스트 안에 JSON 이름과 배열 시작 문자 쌍을 기록하는 역할을 합니다.
아울러 writeStartObject() 메서드는 JSON 객체의 시작 문자를 기록하며, 이 메서드는 배열 컨텍스트 안에서만 유효합니다. 그리고 writeEnd() 메서드는 현재 열려 있는 컨텍스트(객체 또는 배열)의 끝을 기록하여 구조를 완성합니다.
문법(Syntax)
JsonGenerator writeStartArray(String name)
예제 코드(Example)
다음 예제는 JsonGenerator를 사용하여 객체 안에 중첩된 JSON 배열을 만들고, 그 안에 다시 객체들을 포함시키는 과정을 보여줍니다.
import java.io.*;
import javax.json.*;
import javax.json.stream.*;
public class JsonGeneratorTest {
public static void main(String[] args) throws Exception {
StringWriter writer = new StringWriter();
JsonGenerator jsonGen = Json.createGenerator(writer);
jsonGen.writeStartObject()
.write("name", "Adithya")
.write("designation", "Python Developer")
.write("company", "TutorialsPoint")
.writeStartArray("personal details") // 배열 시작
.writeStartObject()
.write("email", "adithya@gmail.com")
.writeEnd() // 첫 번째 객체 종료
.writeStartObject()
.write("contact", "9959927000")
.writeEnd() // 두 번째 객체 종료
.writeEnd() // 배열 종료
.writeEnd(); // 최상위 객체 종료
jsonGen.close();
System.out.println(writer.toString());
}
}실행 결과(Output)
{"name":"Adithya","designation":"Python Developer","company":"TutorialsPoint","personal details":[{"email":"adithya@gmail.com"},{"contact":"9959927000"}]}핵심 정리
- writeStartArray(name): 지정한 이름으로 JSON 배열을 시작합니다.
- writeStartObject(): 새로운 JSON 객체를 시작하며, 배열 컨텍스트에서 호출해야 합니다.
- writeEnd(): 현재 컨텍스트(객체 또는 배열)를 닫습니다.
- 모든 데이터 기록이 끝나면 반드시 close()를 호출하여 리소스를 해제하고 출력을 확정해야 합니다.