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

Java에서 JSON-lib API를 활용해 빈(Bean)을 XML로 변환하는 방법

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 문자열을 얻습니다.