Java에서 net.sf.json.xml.XMLSerializer 클래스는 JSON을 XML로 변환할 때 사용하는 유틸리티 클래스입니다. 이 클래스는 JSONObject 인스턴스를 XML로 변환하는 과정에서, 나중에 다시 JSON으로 되돌릴 수 있도록 타입 힌트(type hints)를 함께 추가해 줍니다.
XMLSerializer 클래스의 write() 메서드를 사용하면 JSON 값을 UTF-8 인코딩이 적용된 XML 문자열로 출력할 수 있으며, 잘 구성된(well-formed) XML 문서의 문자열 표현을 반환합니다.
문법(Syntax)
public String write(JSON json)
예제 코드
아래 예제에서는 Student 객체를 JSONObject로 변환한 뒤, XMLSerializer를 이용해 XML 문자열로 출력합니다.
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
public class ConvertBeanToXMLTest {
public static void main(String[] args) {
Student student = new Student("Sai", "Adithya", 25, "Pune");
JSONObject jsonObj = JSONObject.fromObject(student);
System.out.println(jsonObj.toString(3)); // JSON 보기 좋게 출력(pretty print)
XMLSerializer xmlSerializer = new XMLSerializer();
String xml = xmlSerializer.write(jsonObj);
System.out.println(xml);
}
public static class Student {
private String firstName, lastName, address;
public int age;
public Student(String firstName, String lastName, int age, String address) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.address = address;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public String getAddress() {
return address;
}
}
}실행 결과
{
"firstName": "Sai",
"lastName": "Adithya",
"address": "Pune",
"age": 25
}
<?xml version="1.0" encoding="UTF-8"?>
<o>
<address type="string">Pune</address>
<age type="number">25</age>
<firstName type="string">Sai</firstName>
<lastName type="string">Adithya</lastName>
</o>핵심 정리
위 실행 결과를 보면 각 XML 요소에 type="string", type="number"와 같은 속성이 추가된 것을 확인할 수 있습니다. 이러한 타입 힌트 덕분에 변환된 XML을 다시 JSON으로 역변환할 때 원래의 데이터 타입을 그대로 유지할 수 있습니다.
정리하면, Java에서 빈(Bean)을 XML로 변환하는 절차는 다음과 같습니다.
1. JSONObject.fromObject() 메서드로 빈 객체를 JSONObject로 변환합니다.
2. XMLSerializer 인스턴스를 생성합니다.
3. write() 메서드에 JSONObject를 전달하여 XML 문자열을 얻습니다.