[java] 자바에서 JSON 데이터의 특정 속성 값 필터링하여 새로운 JSON 객체 생성하기

자바에서 JSON 데이터를 다루는 것은 매우 일반적인 작업입니다. 때로는 원하는 특정 속성 값을 필터링하여 새로운 JSON 객체를 생성해야 할 수도 있습니다. 이 글에서는 이와 같은 작업을 수행하는 방법을 알아보겠습니다.

먼저, 종속성으로 org.json 라이브러리를 추가해야 합니다. 이 라이브러리를 사용하면 JSON 데이터를 쉽게 다룰 수 있습니다. 다음은 Maven을 사용하는 경우 pom.xml 파일에 종속성을 추가하는 방법입니다:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20210307</version>
</dependency>

이제 코드를 작성해 보겠습니다. 아래 예제에서는 입력으로 주어진 JSON 데이터에서 “name” 속성 값이 “John”인 객체들을 필터링하여 새로운 JSON 객체를 생성하는 예제입니다.

import org.json.JSONArray;
import org.json.JSONObject;

public class JsonFilterExample {
    public static void main(String[] args) {
        String jsonStr = "{\"data\": [{\"name\":\"John\", \"age\":35}, {\"name\":\"Jane\", \"age\":28}, {\"name\":\"Mike\", \"age\":42}]}";
        JSONObject jsonObj = new JSONObject(jsonStr);
        JSONArray filteredArr = new JSONArray();

        JSONArray dataArr = jsonObj.getJSONArray("data");
        for (int i = 0; i < dataArr.length(); i++) {
            JSONObject obj = dataArr.getJSONObject(i);
            if (obj.getString("name").equals("John")) {
                filteredArr.put(obj);
            }
        }

        JSONObject filteredJson = new JSONObject();
        filteredJson.put("filteredData", filteredArr);
        System.out.println(filteredJson.toString());
    }
}

위의 코드에서는 주어진 JSON 문자열을 JSONObject로 파싱하여 입력 데이터로 사용합니다. 그런 다음 JSONArray로부터 “data” 속성 값을 가져옵니다. 반복문을 사용하여 “data” 배열의 각 요소를 순회하면서 “name” 속성 값을 확인합니다. “John”인 경우에만 filteredArr에 추가합니다. 마지막으로 filteredArrfilteredJson 객체에 추가하고, 결과를 출력합니다.

이 예제를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

{"filteredData":[{"name":"John","age":35}]}

이와 같이 자바에서 JSON 데이터의 특정 속성 값을 필터링하여 새로운 JSON 객체를 생성할 수 있습니다. org.json 라이브러리를 사용하면 JSON 데이터를 쉽게 조작할 수 있으므로, 해당 라이브러리를 활용하는 것이 좋습니다.

참고 자료