자바에서 JSON 데이터를 다룰 때 javax.json.JsonObject 인터페이스는 변경 불가능한(immutable) JSON 객체 값을 표현하는 데 사용됩니다. 이 인터페이스는 JSON 객체의 이름/값(name/value) 매핑에 대해 수정할 수 없는(unmodifiable) 맵 뷰를 제공하므로, 한 번 생성된 객체는 안전하게 공유하고 사용할 수 있습니다.
JsonObject 객체를 생성하는 두 가지 방법
JsonObject 인스턴스는 크게 두 가지 방식으로 생성할 수 있습니다.
- JsonReader 클래스의 readObject() 정적 메서드 — 파일, 스트림 등 입력 소스로부터 JSON 객체를 읽어와 생성합니다.
- Json 클래스의 createObjectBuilder() 정적 메서드 — 코드에서 직접 키와 값을 추가하며 JSON 객체를 빌드합니다.
문법(Syntax)
public static JsonObjectBuilder createObjectBuilder()
createObjectBuilder() 메서드는 JsonObjectBuilder 객체를 반환하며, 이 빌더의 add() 메서드를 호출해 원하는 키-값 쌍을 순차적으로 추가할 수 있습니다. 모든 값을 추가한 후에는 build() 메서드를 호출해 최종 JsonObject를 완성합니다.
예제 코드
아래 예제는 이름, 직책, 회사, 위치 정보를 담은 JSON 객체를 만들고, 이를 문자열로 출력하는 과정을 보여줍니다.
import java.io.*;
import javax.json.*;
public class JsonObjectTest {
public static void main(String[] args) throws Exception {
// JsonObjectBuilder 생성
JsonObjectBuilder builder = Json.createObjectBuilder();
// 키-값 쌍 추가
builder.add("Name", "Adithya");
builder.add("Designation", "Python Developer");
builder.add("Company", "TutorialsPoint");
builder.add("Location", "Hyderabad");
// JsonObject 빌드
JsonObject data = builder.build();
// StringWriter를 통해 JSON 출력
StringWriter sw = new StringWriter();
JsonWriter jw = Json.createWriter(sw);
jw.writeObject(data);
jw.close();
System.out.println(sw.toString());
}
}실행 결과(Output)
{"Name":"Adithya","Designation":"Python Developer","Company":"TutorialsPoint","Location":"Hyderabad"}정리
이처럼 Json.createObjectBuilder()로 빌더를 생성하고 add() 메서드로 값을 추가한 뒤 build()를 호출하면 손쉽게 JSON 객체를 만들 수 있습니다. 생성된 JsonObject는 변경 불가능하기 때문에 멀티스레드 환경에서도 안전하게 활용할 수 있으며, JsonWriter를 사용하면 객체를 JSON 형식의 문자열로 직렬화하여 출력할 수 있습니다.