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)을 참고해주세요.
Related Posts
- Java - hashCode(), 사용하는 이유? 구현 방법?
- Java8의 Stream reduce() 사용 방법 및 예제
- Java - filter, map, flatMap 사용 방법 및 예제
- Java - 2개의 Map 합치기 (merge, putAll)
- Java - ConcurrentModificationException 원인 및 해결 방법
- JUnit - @After와 @AfterClass의 차이점
- JUnit - @Before와 @BeforeClass의 차이점
- java와 javac의 차이점
- Java - 자바(JDK) 버전 확인 방법 (터미널, cmd 명령어)
- Java - java.util.Date를 java.sql.Date로 변환
- Java - 시스템 운영체제(OS) 정보 확인
- Java - 코드 실행 시간 측정
- Java - HashSet.retainAll() 사용 방법 및 예제
- Java - ArrayList.retainAll() 사용 방법 및 예제
- Java - ArrayList를 String으로 변환
- Java - float을 int로 변환
- Java - float을 String으로 변환
- Java - String을 boolean으로 변환
- Java - XML을 JSON으로 변환
- Java - ClassNotFoundException 발생 원인 및 해결 방법
- Java - private 생성자를 사용하는 이유
- Java - non-static method cannot be referenced from a static context
- Java - NoSuchMethodError 원인 및 해결 방법
- Java - Object를 byte[]로 변환
- Java - AbstractMethodError 원인 및 해결
- NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper 에러
- Java - HttpClient에 Timeout 적용
- IntelliJ에서 Java 실행 파일 배포 (Export Runnable JAR)
- Java - JAR 디컴파일 방법 (JD-GUI, JD-CLI)
- Java - 키보드, 마우스 이벤트 받기 (이벤트 후킹)
- Java에서 윈도우 cmd 명령어 실행 및 결과 출력
- Java - Selenium 드라이버 자동 설치 방법
- Java - JSON 라이브러리 사용 방법 (JSONObject, JSONArray)
- Java - ZIP 압축, 압축 해제 (zip, unzip)
- Java - byte[] 배열을 File에 저장