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

Java JSONObject의 accumulate() 메서드 완벽 정리: put()과의 차이점까지

JSONObject는 이름(name)과 값(value)의 쌍으로 구성된 순서가 없는(unordered) 컬렉션입니다. JSON 데이터를 다룰 때 자주 사용되는 JSONArray의 핵심 메서드로는 accumulate(), put(), opt(), append(), write() 등이 있습니다.

그중 accumulate() 메서드는 하나의 키(key) 아래에 여러 값을 누적하는 역할을 합니다. 이 메서드는 put() 메서드와 비슷해 보이지만 중요한 차이점이 있습니다. 동일한 키에 이미 객체가 저장되어 있는 경우, accumulate()는 기존 값을 덮어쓰지 않고 그 키 아래에 JSONArray를 자동으로 생성하여 지금까지 누적된 모든 값을 함께 보관합니다. 또한 해당 키에 이미 JSONArray가 존재한다면 새로운 값을 배열에 추가하기만 하면 됩니다.

문법(Syntax)

public JSONObject accumulate(java.lang.String key, java.lang.Object value) throws JSONException

사용 예제(Example)

아래 예제는 하나의 "Technology" 키에 여러 기술 이름을 accumulate() 메서드로 계속 추가하는 코드입니다.

import org.json.*;
public class JSONAccumulateMethodTest {
    public static void main(String[] args) throws JSONException {
        JSONObject jsonObj = new JSONObject();
        jsonObj.accumulate("Technology", "Java");
        jsonObj.accumulate("Technology", "Python");
        jsonObj.accumulate("Technology", "Spark");
        jsonObj.accumulate("Technology", "Selenium");
        jsonObj.accumulate("Technology", ".Net");
        System.out.println(jsonObj.toString(3));
    }
}

실행 결과(Output)

같은 키에 값을 반복해서 넣었음에도 불구하고, 결과적으로 하나의 JSONArray 안에 모든 값이 순서대로 저장된 것을 확인할 수 있습니다.

{"Technology": [
    "Java",
    "Python",
    "Spark",
    "Selenium",
    ".Net"
]}

정리

accumulate() 메서드는 동일한 키로 여러 개의 데이터를 그룹화해야 할 때 매우 유용합니다. put()을 사용하면 같은 키에 값을 넣을 때마다 기존 값이 덮어써지지만, accumulate()를 사용하면 값이 자동으로 배열 형태로 누적되므로 코드가 훨씬 간결해집니다.