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 - Unsupported class file major version 61 에러
- Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개
- Java - 문자열 공백제거 (trim, replace)
- Java - replace()와 replaceAll()의 차이점
- Java - ArrayList 초기화, 4가지 방법
- Java - 배열 정렬(Sorting) (오름차순, 내림차순)
- Java - 문자열(String)을 비교하는 방법 (==, equals, compare)
- Java - StringBuilder 사용 방법, 예제
- Java - 로그 출력, 파일 저장 방법 (Logger 라이브러리)
- Java IllegalArgumentException 의미, 발생 이유
- Java - NullPointerException 원인, 해결 방법
- Seleninum의 ConnectionFailedException: Unable to establish websocket connection 해결
- Java - compareTo(), 객체 크기 비교
- Java - BufferedWriter로 파일 쓰기
- Java - BufferedReader로 파일 읽기
- Java charAt() 함수 알아보기
- Java - BigInteger 범위, 비교, 연산, 형변환
- Java contains()로 문자(대소문자 X) 포함 확인
- Java - Set(HashSet)를 배열로 변환
- Java - 문자열 첫번째 문자, 마지막 문자 확인
- Java - 문자열 한글자씩 자르기
- Java - 문자열 단어 개수 가져오기
- Java - 1초마다 반복 실행
- Java - 배열을 Set(HashSet)로 변환
- Java - 여러 Set(HashSet) 합치기
- Java - 명령행 인자 입력 받기
- Java - 리스트 역순으로 순회, 3가지 방법
- Java - 특정 조건으로 리스트 필터링, 3가지 방법
- Java - HashMap 모든 요소들의 합계, 평균 계산
- Java - 특정 조건으로 HashMap 필터링
- Java - 싱글톤(Singleton) 패턴 구현
- Java - 숫자 왼쪽에 0으로 채우기
- Java - String 배열 초기화 방법
- Java - 정렬된 순서로 Map(HashMap) 순회
- Java - HashMap에서 key, value 가져오기