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

Java에서 JSON-lib API를 사용해 JSON 배열을 배열로 변환하는 방법


JSONArray는 여러 개의 값을 순서대로 나열한 시퀀스입니다. 외부 표현은 대괄호([ ])로 묶고 쉼표로 값을 구분한 문자열이며, 내부적으로는 get()opt() 메서드를 가진 객체로 구성되어 있어 인덱스를 통해 각 값에 접근할 수 있습니다. 또한 element() 메서드를 사용하면 새로운 값을 추가하거나 기존 값을 교체할 수 있습니다.

배열(array)동일한 타입의 여러 값을 저장하는 객체로, 원시 타입(primitive type)과 객체 참조(object reference)를 모두 담을 수 있습니다. JSON 배열을 자바 배열로 변환하려면 JSONArray 클래스의 toArray() 메서드를 사용하면 됩니다. 이 메서드는 JSONArray에 담긴 내용을 그대로 포함하는 Object[]를 생성해 반환합니다.

구문

public Object[] toArray()

예제

다음 예제에서는 element() 메서드로 문자열 값들과 문자열 배열을 JSONArray에 차례대로 추가한 뒤, toString(3) 메서드로 들여쓰기가 적용된 보기 좋은 JSON 문자열을 만들어 출력하고, toArray() 메서드를 호출해 JSONArray를 Object[] 배열로 변환합니다.

import java.util.Arrays;
import net.sf.json.JSONArray;

public class ConvertJSONArrayToArrayTest {
   public static void main(String[] args) {
      JSONArray jsonArray = new JSONArray()
            .element("Raja Ramesh")
            .element("115")
            .element("Tutorials Point")
            .element("Hyderabad")
            .element(new String [] {"Java", "Testing", "Python"});
      String jsonStr = jsonArray.toString(3); // JSON을 보기 좋게 출력
      System.out.println("JSON:\n" + jsonStr);
      Object[] array = jsonArray.toArray();
      System.out.println("-------------------------------------------------------------------");
      System.out.println("Array:\n" + Arrays.toString(array));
   }
}

출력 결과

JSON:
[
   "Raja Ramesh",
   "115",
   "Tutorials Point",
   "Hyderabad",
   [
     "Java",
     "Testing",
     "Python"
   ]
]
----------------------------------------------------------------------------
Array:
[Raja Ramesh, 115, Tutorials Point, Hyderabad, ["Java","Testing","Python"]]

참고 사항

  • 반환 타입: toArray() 메서드는 항상 Object[]를 반환하므로, 특정 타입의 배열이 필요하다면 각 요소를 적절한 타입으로 캐스팅해서 사용해야 합니다.
  • 중첩된 배열: JSONArray 내부에 다른 JSONArray나 컬렉션이 포함되어 있으면, 변환된 배열에서 해당 요소는 JSONArray 객체 그대로 유지됩니다. 위 출력 결과의 마지막 요소가 ["Java","Testing","Python"]으로 표시되는 이유입니다.
  • 라이브러리 의존성: JSON-lib(net.sf.json)를 사용하려면 json-lib 라이브러리 외에 commons-beanutils, commons-collections, commons-lang, ezmorph 같은 의존성도 함께 추가해야 합니다.