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

자바 JSON-lib API를 활용해 배열을 JSONArray로 변환하는 방법

자바 배열과 JSONArray의 차이점 이해하기

자바 배열(Java Array)은 동일한 타입의 여러 변수를 저장할 수 있는 객체입니다. 기본 타입(primitive type)과 객체 참조(object reference)를 모두 담을 수 있습니다.

반면 JSONArray는 값들이 순서대로 나열된 시퀀스(ordered sequence)입니다. 외부 텍스트 형태는 대괄호([ ])로 감싸고 각 값을 쉼표(,)로 구분하는 문자열이며, 내부적으로는 다음과 같은 메서드를 제공합니다.

  • get(), opt(): 인덱스를 통해 값에 접근
  • element(): 값을 추가하거나 교체

배열을 JSONArray로 변환하는 절차

변환 과정은 매우 간단합니다. 먼저 Object[] 배열을 생성한 뒤, 이를 JSONSerializer 클래스의 toJSON() 메서드에 인수로 전달하고, 반환된 객체를 JSONArray로 타입 캐스팅하면 됩니다.

참고: JSON-lib 라이브러리를 사용하려면 프로젝트에 의존성을 추가해야 합니다. Maven 기준으로는 net.sf.json-lib:json-lib:2.4 아티팩트에 jdk15 분류자(classifier)를 지정하여 추가할 수 있습니다.

예제 코드

아래 예제에서는 다양한 타입(문자열, 정수, 실수, 불리언, char 배열)을 포함하는 Object[] 배열을 JSONArray로 변환합니다.

import net.sf.json.JSONArray;
import net.sf.json.JSONSerializer;

public class ConvertArrayToJSONArrayTest {
   public static void main(String[] args) {
      Object[] objArray = new Object[] {
            "Array to JSON Array",
            new Integer(10),
            new Long(30),
            new Double(14.26),
            true,
            new char[] {'X', 'Y', 'Z'}
      };
      JSONArray jsonArray = (JSONArray)JSONSerializer.toJSON(objArray);
      System.out.println(jsonArray.toString(3)); // pretty print JSON
   }
}

실행 결과

[
   "Array to JSON Array",
   10,
   30,
   14.26,
   true,
   [
      "X",
      "Y",
      "Z"
   ]
]

핵심 포인트 정리

  • JSONSerializer.toJSON() 메서드는 자바 배열을 받아 JSON 형태의 객체로 변환합니다.
  • 반환 타입은 JSON이므로, 배열을 다룰 때는 반드시 (JSONArray)로 명시적 타입 캐스팅을 해야 합니다.
  • toString(3)처럼 들여쓰기 수준(indent factor)을 지정하면 보기 좋게 포맷된(pretty print) JSON 문자열을 얻을 수 있습니다.
  • char 배열과 같은 중첩 배열도 자동으로 JSON 배열 안에 중첩된 형태로 변환됩니다.