Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 javax.json API로 기존 JSON 데이터 업데이트하는 방법

JsonBuilderFactory 인터페이스는 JsonObjectBuilder 인스턴스를 생성하는 팩토리이며, JsonObjectBuilderJsonObject 모델을 처음부터 생성하기 위한 빌더입니다. 이 인터페이스는 빈 JSON 객체 모델을 초기화하고, 객체 모델에 이름/값 쌍을 추가하는 메서드와 결과 객체를 반환하는 메서드를 제공합니다. createObjectBuilder() 메서드를 사용하여 JsonObject를 빌드하는 데 사용할 수 있는 JsonObjectBuilder 인스턴스를 생성할 수 있습니다.

구문

JsonObjectBuilder createObjectBuilder()

아래 예제에서는 새로 추가된 데이터로 기존 JSON 데이터를 업데이트하는 방법을 보여줍니다.

예제

import java.io.*;
import javax.json.*;

public class UpdateExistingJsonTest {
    public static void main(String[] args) throws Exception {
        String jsonString = "{\"id\":\"115\", \"name\":\"Raja\", \"address\":[{\"area\":\"Madhapur\", \"city\":\"Hyderabad\"}]}";
        StringReader reader = new StringReader(jsonString);
        JsonReader jsonReader = Json.createReader(reader);
        System.out.println("기존 JSON: \n" + jsonString);
        
        StringWriter writer = new StringWriter();
        JsonWriter jsonWriter = Json.createWriter(writer);
        JsonObject jsonObject = jsonReader.readObject();
        
        JsonBuilderFactory jsonBuilderFactory = Json.createBuilderFactory(null);
        JsonObjectBuilder jsonObjectBuilder = jsonBuilderFactory.createObjectBuilder();
        
        // 기존 필드 복사
        for (String key : jsonObject.keySet()) {
            jsonObjectBuilder.add(key, jsonObject.get(key));
        }
        
        // 새 필드 추가
        jsonObjectBuilder.add("Contact Number", "9959984000");
        jsonObjectBuilder.add("Country", "India");
        
        jsonObject = jsonObjectBuilder.build();
        jsonWriter.writeObject(jsonObject);
        System.out.println("새 JSON: \n" + jsonObject);
    }
}

실행 결과

기존 JSON:
{"id":"115", "name":"Raja", "address":[{"area":"Madhapur", "city":"Hyderabad"}]}

새 JSON:
{"id":"115","name":"Raja","address":[{"area":"Madhapur","city":"Hyderabad"}],"Contact Number":"9959984000","Country":"India"}

핵심 포인트

  • JsonReader를 사용하여 문자열에서 JSON 객체 읽기
  • JsonBuilderFactory로 빌더 인스턴스 생성
  • 기존 키-값 쌍을 새 빌더에 복사
  • add() 메서드로 새로운 필드 추가
  • build()로 최종 JsonObject 생성
  • JsonWriter로 결과 출력

이 방식은 기존 JSON 구조를 유지하면서 새로운 필드를 추가하거나 기존 필드를 수정할 때 유용합니다. 중첩된 객체나 배열의 경우 해당 요소를 가져와 별도의 빌더로 수정한 후 다시 추가하는 방식으로 처리할 수 있습니다.