JSON은 JavaScript Object Notation의 약자로, 데이터를 전송하고 저장하기 위해 널리 사용되는 경량 데이터 형식입니다. Java의 JSONObject 클래스는 문자열을 파싱하여 맵(map)과 유사한 객체를 생성할 수 있으며, 이미 존재하는 JSON 객체에서 필요한 키만 추출해 새로운 JSON 객체를 만드는 기능도 제공합니다.
이때 활용되는 것이 바로 JSONObject(JSONObject jo, java.lang.String[] names) 생성자입니다. 이 생성자는 원본 JSON 객체와 함께 복사하고 싶은 키 이름들을 문자열 배열로 전달받습니다. 지정된 키에 해당하는 값들만 새 객체에 복사되며, 원본 객체에 존재하지 않는 키가 배열에 포함된 경우 해당 키는 자동으로 무시됩니다.
문법(Syntax)
public JSONObject(JSONObject jo, java.lang.String[] names)
예제 코드
아래 예제에서는 HashMap으로 JSON 객체를 먼저 생성한 뒤, 그중 "Name"과 "Age" 두 개의 키만 선택하여 하위 집합(subset) JSON 객체를 만드는 과정을 보여줍니다.
import java.util.*;
import org.json.*;
public class JSONSubsetTest {
public static void main(String[] args) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();
map.put("Name", "Adithya");
map.put("Age", 25);
map.put("DOB", new Date(94, 4, 6));
map.put("City", "Hyderabad");
JSONObject obj = new JSONObject(map);
System.out.println(obj.toString(2));
// "Name"과 "Age" 키만 포함하는 하위 집합 객체 생성
JSONObject subset = new JSONObject(obj, new String[]{"Name", "Age"});
System.out.println(subset.toString(2));
}
}실행 결과
{
"City": "Hyderabad",
"DOB": "Fri May 06 00:00:00 IST 1994",
"Age": 25,
"Name": "Adithya"
}
{
"Age": 25,
"Name": "Adithya"
}핵심 정리
첫 번째 출력 결과는 원본 JSON 객체의 전체 내용이며, 두 번째 출력 결과는 JSONObject(obj, names) 생성자를 통해 "Name"과 "Age" 키만 복사된 하위 집합 객체입니다. 이처럼 이 생성자를 활용하면 대용량 JSON 데이터에서 특정 필드만 손쉽게 추출할 수 있어, API 응답 최적화나 데이터 필터링 작업에 매우 유용합니다.