JSON(JavaScript Object Notation)은 가장 널리 사용되는 데이터 교환 형식 중 하나입니다. JSON은 경량(lightweight)이며 특정 프로그래밍 언어에 종속되지 않는 언어 독립적이라는 장점이 있어 다양한 시스템 간 데이터 전송에 활용됩니다.
JSONArray는 문자열을 파싱하여 벡터(vector)와 유사한 객체를 생성하며, java.util.List 인터페이스를 지원합니다. 따라서 JSONArray의 요소를 하나씩 읽어 List에 담은 뒤, 이를 배열로 변환하는 방식으로 String 배열로 손쉽게 변환할 수 있습니다.
변환 절차
JSONArray를 String 배열로 변환하는 과정은 다음과 같습니다.
- JSONArray 객체를 생성하고 데이터를 추가합니다.
- 반복문을 사용해 JSONArray의 각 요소를 getString() 메서드로 읽어 List<String>에 저장합니다.
- List의 toArray() 메서드를 호출하여 String 배열로 최종 변환합니다.
예제 코드
import org.json.*;
import java.util.*;
public class JsonArraytoStringArrayTest {
public static void main(String[] args) {
JSONArray jsonArray = new JSONArray();
jsonArray.put("INDIA");
jsonArray.put("AUSTRALIA");
jsonArray.put("SOUTH AFRICA");
jsonArray.put("ENGLAND");
jsonArray.put("NEWZEALAND");
List<String> list = new ArrayList<String>();
for(int i = 0; i < jsonArray.length(); i++) {
list.add(jsonArray.getString(i));
}
System.out.print("JSONArray: " + jsonArray);
System.out.print("\n");
String[] stringArray = list.toArray(new String[list.size()]);
System.out.print("String Array: ");
for(String str : stringArray) {
System.out.print(str + " ");
}
}
}
실행 결과
JSONArray: ["INDIA","AUSTRALIA","SOUTH AFRICA","ENGLAND","NEWZEALAND"] String Array: INDIA AUSTRALIA SOUTH AFRICA ENGLAND NEWZEALAND
정리
이 예제에서 핵심은 getString(int index) 메서드입니다. 이 메서드는 JSONArray에서 해당 인덱스의 값을 문자열로 반환하므로, 반복문과 함께 사용하면 모든 요소를 안전하게 추출할 수 있습니다. 이후 toArray(new String[list.size()])를 호출하면 List가 String 배열로 변환됩니다.
참고로 Java 8 이상에서는 스트림(Stream) API를 활용하여 더 간결하게 처리할 수도 있습니다.
String[] stringArray = IntStream.range(0, jsonArray.length())
.mapToObj(jsonArray::getString)
.toArray(String[]::new);
이처럼 JSONArray를 String 배열로 변환하는 방법은 API 응답 파싱 등 실무에서 자주 사용되므로, 기본 패턴을 잘 익혀두면 유용합니다.