자바 배열과 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 배열 안에 중첩된 형태로 변환됩니다.