JSON(JavaScript Object Notation)은 경량 데이터 교환 형식으로, 데이터를 키(key)-값(value) 쌍의 구조로 표현합니다. Java에서는 org.json.XML 클래스를 사용하면 JSONObject를 XML 형식으로 간편하게 변환할 수 있습니다. 이 클래스는 XML 텍스트를 JSONObject로 변환하거나, 그 반대로 JSONObject를 XML 텍스트로 변환하는 정적(static) 메서드를 제공합니다.
특히 XML.toString() 메서드는 JSON 객체를 잘 구성된(well-formed) XML 문자열로 변환하며, 그 결과는 요소(element) 단위로 정규화된 형태를 가집니다.
메서드 구문(Syntax)
public static java.lang.String toString(java.lang.Object object) throws JSONException
사전 준비: org.json 라이브러리 추가
Maven 기반 프로젝트라면 pom.xml 파일에 다음 의존성을 추가하고 빌드하면 됩니다. Gradle을 사용한다면 implementation 'org.json:json:20240303' 한 줄만 추가하면 됩니다.
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240303</version>
</dependency>
예제 코드
다음은 JSON 문자열을 파싱한 후 XML 문자열로 변환하는 전체 예제입니다.
import java.io.*;
import org.json.*;
public class JSONtoXMLTest {
public static void main(String[] args) throws JSONException {
String json = "{employee : { age:30, name : Raja, technology:Java}}";
// JSON을 XML로 변환
String xml = convert(json, "root"); // 이 메서드는 JSON 객체를 XML 문자열로 변환합니다.
System.out.println(xml);
}
public static String convert(String json, String root) throws JSONException {
JSONObject jsonObject = new JSONObject(json);
// XML 선언부와 루트 태그로 감싸 완전한 XML 문서를 생성합니다.
String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n<" + root + ">"
+ XML.toString(jsonObject)
+ "</" + root + ">";
return xml;
}
}
실행 결과
<?xml version="1.0" encoding="ISO-8859-15"?>
<root>
<employee>
<name>Raja</name>
<technology>Java</technology>
<age>30</age>
</employee>
</root>
핵심 포인트 정리
- JSONObject 파싱: new JSONObject(json) 생성자가 JSON 문자열을 해석하여 객체로 만듭니다.
- 키-요소 매핑: JSON의 각 키(name, technology, age)는 같은 이름의 XML 요소로 변환됩니다.
- 중첩 구조 처리: 중첩된 JSON 객체는 하위 XML 요소로 자동 계층화됩니다.
- 루트 태그: XML 표준상 최상위 요소가 하나 필요하므로, 예제에서는 문자열 결합으로 <root> 태그를 감싸 주었습니다.
이처럼 org.json 라이브러리를 활용하면 복잡한 설정 없이도 몇 줄의 코드만으로 JSON 데이터를 표준 XML 문서로 손쉽게 변환할 수 있습니다.