Java - XML을 JSON으로 변환

Java에서 XML(eXtensible Markup Language)을 JSON(JavaScript Object Notation)으로 변환하는 방법을 소개합니다.

이 글에서는 JSON을 다루기 위해 org.json 라이브러리를 사용합니다. 자세한 사용 방법은 Java - JSON 라이브러리 사용 방법 (JSONObject, JSONArray)를 참고해주세요.

1. 프로젝트 의존성 설정

Maven 프로젝트에서 org.json 라이브러리를 사용하려면 아래와 같이 의존성을 추가하시면 됩니다.

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20211205</version>
</dependency>

2. XML을 JSON으로 변환

다음은 JSON으로 변환할 XML 샘플입니다.

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

XML 형식의 문자열을 JSON으로 변환하려면 XML.toJSONObject()의 인자로 전달하면 됩니다. 그러면 XML이 JSON으로 변환되면서 JSONObject 객체가 리턴됩니다.

JSONObject.toString()은 JSONObject 객체가 갖고 있는 JSON을 문자열로 출력합니다. toString()의 인자로 전달되는 것은 indent로, 사람이 보기 쉽게 JSON을 표현하여 출력해 줍니다. 만약 indent를 인자로 전달하지 않으면 문자열이 개행과 공백으로 구분되지 않고 출력됩니다. 파일에 저장하거나 다른 네트워크에 전달한다면 최대한 적은 문자열로 보내는 것이 좋습니다.

import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;

public class ConvertXmlToJson {

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

        String xmlStr =
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<note>\n" +
                    "<to>Tove</to>\n" +
                    "<from>Jani</from>\n" +
                    "<heading>Reminder</heading>\n" +
                    "<body>Don't forget me this weekend!</body>\n" +
                "</note>";

        JSONObject json = XML.toJSONObject(xmlStr);
        String jsonStr = json.toString(4);
        System.out.println(jsonStr);
    }
}

Output:

{"note": {
    "heading": "Reminder",
    "from": "Jani",
    "to": "Tove",
    "body": "Don't forget me this weekend!"
}}

위에서 설명한 것처럼, toString()에 indent를 인자로 전달하지 않으면 개행과 공백없이 JSON이 출력됩니다.

JSONObject json = XML.toJSONObject(xmlStr);
String jsonStr = json.toString();
System.out.println(jsonStr);

Output:

{"note":{"heading":"Reminder","from":"Jani","to":"Tove","body":"Don't forget me this weekend!"}}

XML 문자열을 JSON 문자열로 변환하는 방법을 알아보았습니다. XML 파일을 JSON 파일로 변환하고 싶으시다면, XML 파일을 읽어 위의 코드로 JSON으로 변환하고 그 내용을 다시 파일로 저장하도록 구현하시면 됩니다.

JSONObject, org.json 라이브러리에 대해서 더 알아보고 싶다면 Java - JSON 라이브러리 사용 방법 (JSONObject, JSONArray)을 참고해주세요.

Loading script...
codechachaCopyright ©2019 codechacha