JSON(JavaScript Object Notation)은 경량화된 데이터 교환 형식으로, 키-값(key-value) 쌍의 구조로 데이터를 표현합니다. Java에서 JSONObject는 문자열로부터 텍스트를 파싱하여 맵(Map)과 유사한 객체를 생성할 수 있으며, java.util.Map 인터페이스를 지원합니다.
이 글에서는 org.json.simple.JSONObject 클래스를 사용하여 두 개의 JSON 객체를 하나로 병합하는 방법을 알아보겠습니다.
putAll() 메서드란?
JSON 객체 병합은 putAll() 메서드를 통해 간단하게 구현할 수 있습니다. 이 메서드는 java.util.Map 인터페이스에서 상속받은 것으로, 지정한 맵의 모든 키-값 쌍을 현재 객체에 복사합니다. 만약 동일한 키가 존재한다면, 나중에 병합되는 객체의 값으로 덮어쓰게 됩니다.
예제 코드
아래 예제에서는 첫 번째 JSON 객체와 두 번째 JSON 객체를 생성한 후, putAll() 메서드를 사용하여 두 객체를 병합합니다.
import java.util.Date;
import org.json.simple.JSONObject;
public class MergeJsonObjectsTest {
public static void main(String[] args) {
// 첫 번째 JSON 객체
JSONObject jsonObj = new JSONObject();
jsonObj.put("Name", "Adithya");
jsonObj.put("Age", 25);
jsonObj.put("Address", "Hitech City");
// 두 번째 JSON 객체
JSONObject jsonObj1 = new JSONObject();
jsonObj1.put("City", "Hyderabad");
jsonObj1.put("DOB", new Date(104, 3, 6));
// 첫 번째와 두 번째 JSON 객체 병합
jsonObj.putAll(jsonObj1);
System.out.println(jsonObj);
}
}
실행 결과
{"Address":"Hitech City","DOB":Tue Apr 06 00:00:00 IST 2004,"City":"Hyderabad","Age":25,"Name":"Adithya"}
코드 설명
위 코드의 실행 흐름을 살펴보면 다음과 같습니다.
1. 첫 번째 JSONObject에 이름(Name), 나이(Age), 주소(Address) 데이터를 추가합니다.
2. 두 번째 JSONObject에는 도시(City), 생년월일(DOB) 데이터를 추가합니다.
3. putAll(jsonObj1) 호출 시 두 번째 객체의 모든 항목이 첫 번째 객체에 통합됩니다.
4. 최종적으로 병합된 단일 JSON 객체가 출력됩니다.
주의 사항
병합 과정에서 두 객체에 동일한 키가 존재하면 기존 값이 새로운 값으로 대체된다는 점을 유의해야 합니다. 또한 org.json.simple 라이브러리는 외부 의존성으로, Maven이나 Gradle 프로젝트에서는 해당 라이브러리를 빌드 파일에 추가해야 사용할 수 있습니다.