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

Java에서 JSON-lib API를 활용해 컬렉션(Collection)을 JSON 배열로 변환하는 방법

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)로 출력할 수 있습니다. 중첩된 리스트 역시 별도의 처리 없이 내부 배열로 그대로 변환되므로, 복잡한 구조의 데이터를 다룰 때도 유용하게 활용할 수 있습니다.