JSONObject란 무엇인가?
JSONObject는 이름(name)과 값(value) 쌍으로 이루어진 순서 없는 컬렉션으로, 문자열(String)의 텍스트를 파싱하여 map과 유사한 객체를 생성하는 클래스입니다.
JSONObject 클래스에서 제공하는 increment() 메서드를 사용하면 특정 속성의 값을 간편하게 자동 증가(auto-increment)시킬 수 있습니다. 동작 방식은 다음과 같습니다.
- 해당 키(key)로 된 속성이 존재하지 않으면, 값이 1인 새로운 속성을 생성합니다.
- 속성이 이미 존재하고, 그 값의 타입이 Integer, Long, Double 또는 Float라면 기존 값에 1을 더합니다.
메서드 문법
public JSONObject increment(java.lang.String key) throws JSONException
increment() 메서드는 키를 매개변수로 받아 값을 증가시킨 후, 자기 자신(JSONObject)을 반환하기 때문에 메서드 체이닝(method chaining)을 통해 여러 속성을 연속적으로 증가시킬 수 있습니다.
사용 예제
import org.json.JSONException;
import org.json.JSONObject;
public class IncrementJSONObjectTest {
public static void main(String[] args) throws JSONException {
JSONObject jsonObj = new JSONObject();
jsonObj.put("year", 2019);
jsonObj.put("age", 25);
System.out.println(jsonObj.toString(3));
jsonObj.increment("year").increment("age");
System.out.println(jsonObj.toString(3));
jsonObj.increment("year").increment("age");
System.out.println(jsonObj.toString(3));
jsonObj.increment("year").increment("age");
System.out.println(jsonObj.toString(3));
}
}실행 결과
{
"year": 2019,
"age": 25
}
{
"year": 2020,
"age": 26
}
{
"year": 2021,
"age": 27
}
{
"year": 2022,
"age": 28
}정리
위 예제에서 볼 수 있듯이, increment() 메서드를 호출할 때마다 year와 age 속성의 값이 각각 1씩 증가하는 것을 확인할 수 있습니다. 카운터 구현, 통계 집계, 조회수 누적 등 반복적으로 숫자를 증가시켜야 하는 상황에서 유용하게 활용할 수 있습니다. 다만, 해당 속성의 값이 정수나 실수 타입이 아닌 경우에는 JSONException이 발생할 수 있으므로 주의해야 합니다.