net.sf.json.JSONArray는 값들의 순서가 있는 나열(ordered sequence)입니다. 외부 텍스트 형태는 대괄호([])로 감싸고 쉼표(,)로 값을 구분한 문자열이며, 내부 형태는 인덱스를 통해 값에 접근할 수 있는 get()과 opt() 메서드, 그리고 값을 추가하거나 교체할 수 있는 element() 메서드를 가진 객체입니다.
JSONArray에 저장될 수 있는 값의 타입은 Boolean, JSONArray, JSONObject, Number, String, 그리고 JSONNull 객체 등입니다.
아래 예제에서는 JSON-lib 라이브러리가 제공하는 JSONSerializer.toJSON() 메서드를 사용하여 Java의 컬렉션(List)을 JSON 배열로 손쉽게 변환하는 과정을 살펴보겠습니다. 문자열 리스트는 물론, 숫자·불리언·중첩 리스트처럼 서로 다른 타입이 섞인 객체 리스트도 동일한 방식으로 변환할 수 있습니다.
예제 코드
import java.util.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONSerializer;
public class ConvertCollectionToJsonArrayTest {
public static void main(String[] args) {
// 문자열 리스트를 JSON 배열로 변환
List<String> strList = Arrays.asList("India", "Australia", "England", "South Africa");
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(strList);
System.out.println(jsonArray.toString(3)); // 들여쓰기 3칸으로 보기 좋게 출력
// 다양한 타입이 포함된 객체 리스트를 JSON 배열로 변환
List<Object> dataList = new ArrayList<>();
dataList.add("List Data");
dataList.add(50);
dataList.add(99);
dataList.add(50.65);
dataList.add(true);
dataList.add(Arrays.asList("X", "Y", "Z"));
JSONArray jsonArray2 = (JSONArray) JSONSerializer.toJSON(dataList);
System.out.println(jsonArray2.toString(3));
}
}실행 결과
[ "India", "Australia", "England", "South Africa" ] [ "List Data", 50, 99, 50.65, true, [ "X", "Y", "Z" ] ]
위 결과에서 확인할 수 있듯이, JSONSerializer.toJSON() 메서드에 컬렉션을 전달하기만 하면 해당 컬렉션이 자동으로 JSONArray로 변환됩니다. 또한 toString(3)처럼 들여쓰기 크기를 지정하면 JSON 데이터를 사람이 읽기 쉬운 형태(pretty print)로 출력할 수 있습니다. 중첩된 리스트 역시 별도의 처리 없이 내부 배열로 그대로 변환되므로, 복잡한 구조의 데이터를 다룰 때도 유용하게 활용할 수 있습니다.