[java] Gson 라이브러리에서 JSON을 XML로 변환하는 방법은?

Gson 라이브러리에는 기본적으로 JSON을 다루는 기능들이 있지만, XML을 다루는 기능은 제공하지 않습니다. 그러나 Gson 라이브러리를 사용하여 JSON을 먼저 Java 객체로 변환한 후에, 이를 기반으로 XML로 변환하는 방법을 사용할 수 있습니다.

먼저, Gson 라이브러리를 프로젝트에 추가해야 합니다. Maven이나 Gradle과 같은 의존성 관리 도구를 사용한다면, 해당 라이브러리를 의존성에 추가하면 됩니다.

dependencies {
    implementation 'com.google.code.gson:gson:2.8.6'
}

이제 Gson을 사용하여 JSON을 XML로 변환하는 예제 코드를 살펴보겠습니다.

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import java.io.StringWriter;

public class JsonToXmlConverter {

    public static void main(String[] args) throws JAXBException {

        // JSON 문자열
        String jsonString = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";

        // Gson을 사용하여 JSON을 Java 객체로 변환
        JsonElement jsonElement = JsonParser.parseString(jsonString);
        JsonObject jsonObject = jsonElement.getAsJsonObject();

        // XML로 변환
        JAXBContext jaxbContext = JAXBContext.newInstance(MyClass.class);
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        StringWriter stringWriter = new StringWriter();
        marshaller.marshal(jsonObject, stringWriter);
        String xmlString = stringWriter.toString();

        System.out.println(xmlString);
    }
}

위의 예제 코드에서는 Gson을 사용하여 주어진 JSON 문자열을 Java 객체로 변환한 후, JAXB를 사용하여 이를 XML로 변환합니다.

먼저, JsonParser를 사용하여 JSON 문자열을 JsonElement로 변환한 후, 객체로 추출합니다. 그런 다음, JAXBContext를 사용하여 XML 변환에 필요한 컨텍스트를 생성합니다. Marshaller를 사용하여 Java 객체를 XML로 변환하고, 그 결과를 StringWriter에 기록합니다.

결과적으로, xmlString 변수에는 변환된 XML 문자열이 저장됩니다. 이를 원하는 방식으로 사용하면 됩니다.

이렇게 Gson을 사용하여 JSON을 XML로 변환할 수 있습니다. 다른 방법으로는 Jackson 라이브러리 등을 사용하여 JSON을 XML로 변환하는 방법도 있으니, 필요에 따라 적절한 방법을 선택하여 사용하시면 됩니다.

참고: Gson 라이브러리, JAXB