본문 바로가기

XML to JSON 변환 방법 총정리 - 온라인 도구부터 코드까지

XML 데이터를 JSON으로 바꾸는 가장 빠른 방법을 찾고 계신가요. 온라인 변환기 사용법부터 파이썬, 자바스크립트 코드 예제, 변환 시 주의할 점까지 한 번에 정리했습니다.


XML to JSON 변환 방법 총정리 - 온라인 도구부터 코드까지

오래된 공공데이터 API나 레거시 시스템을 다루다 보면 응답이 XML 형식으로 돌아오는 경우가 많습니다. 정작 프론트엔드나 최신 라이브러리는 대부분 JSON을 기준으로 동작하다 보니, 받은 데이터를 일일이 뜯어 고치느라 시간을 허비한 경험이 한 번쯤 있으실 겁니다. XML 태그를 손으로 파싱하다가 닫는 태그 하나를 놓쳐 한참을 헤맨 적도 있을 텐데요. 다행히 XML to JSON 변환은 생각보다 단순하고, 상황에 맞는 방법만 알면 몇 초 안에 끝납니다.

왜 XML을 JSON으로 바꾸는가

XML은 1998년 W3C 표준으로 자리 잡은 이후 오랫동안 데이터 교환의 사실상 표준이었습니다. 하지만 2000년대 후반 자바스크립트 기반 웹이 보편화되면서 상황이 바뀌었습니다. JSON은 자바스크립트 객체와 거의 동일한 구조라 별도 파싱 없이 바로 사용할 수 있고, 같은 데이터를 표현할 때 용량도 더 작습니다.

실제로 동일한 데이터를 두 형식으로 표현하면 JSON이 XML보다 평균 30퍼센트 안팎 가볍습니다. 닫는 태그가 없고 속성 표기가 간결하기 때문입니다. 다음과 같은 이유로 변환이 필요해집니다.

  • 레거시 SOAP API나 RSS 피드를 최신 프론트엔드에서 사용할 때
  • 공공데이터포털처럼 XML과 JSON을 모두 제공하지만 일부 엔드포인트가 XML만 지원할 때
  • NoSQL 데이터베이스나 JSON 기반 설정 파일로 데이터를 이관할 때

XML과 JSON의 구조 차이

변환을 제대로 하려면 두 형식이 데이터를 어떻게 표현하는지 먼저 이해해야 합니다. 핵심 차이를 표로 정리했습니다.

구분XMLJSON
기본 단위요소(Element)와 속성(Attribute)키-값 쌍
데이터 타입모두 문자열로 취급숫자, 불리언, 배열 구분
배열 표현같은 태그 반복대괄호 배열
주석지원미지원
가독성장황함간결함

가장 까다로운 지점은 속성(attribute)입니다. XML의 <book id="1">처럼 태그 안에 들어가는 속성은 JSON에 직접 대응하는 개념이 없습니다. 그래서 대부분의 변환기는 속성을 @id_id 같은 별도 키로 옮깁니다.

변환은 단순 복사가 아니라 데이터 모델의 번역입니다. 속성과 텍스트 노드를 어떤 키로 매핑할지 미리 정해두면, 변환 후 데이터를 다루기가 훨씬 수월해집니다.

온라인 변환 도구 활용하기

코드를 작성하기 번거롭거나 일회성 변환이라면 온라인 도구가 가장 빠릅니다. XML 텍스트를 붙여넣고 버튼 한 번이면 JSON이 나옵니다. 대표적인 무료 서비스로는 Code Beautify, FreeFormatter, JSON Formatter 등이 있습니다.

참고: 온라인 변환기에 민감한 데이터를 붙여넣을 때는 주의해야 합니다. API 키나 개인정보가 포함된 XML은 외부 서버로 전송되므로, 사내 데이터라면 로컬에서 동작하는 도구나 직접 작성한 코드를 쓰는 편이 안전합니다.

이런 변환기들은 개발자가 자주 찾는 유틸리티 모음 사이트에 함께 제공되는 경우가 많습니다. 예를 들어 디자인 작업 중 색상 코드를 HEX, RGB, HSL로 바꿔야 할 때는 색상 변환기를, 단위가 다른 수치를 환산할 때는 단위 변환기를 함께 즐겨찾기해두면 작업 흐름이 끊기지 않습니다. 변환 작업은 종류만 다를 뿐 도구를 손에 익혀두는 것이 핵심입니다.

온라인 도구를 고를 때 확인하면 좋은 항목은 다음과 같습니다.

  • 속성을 어떻게 처리하는지 미리보기로 확인 가능한가
  • 변환 결과를 보기 좋게 들여쓰기(pretty print) 해주는가
  • 잘못된 XML을 넣었을 때 오류 위치를 알려주는가

언어별 변환 코드 예제

반복 작업이거나 서버에 자동화로 넣어야 한다면 코드로 처리하는 것이 정석입니다. 주요 언어별 대표 라이브러리를 정리했습니다.

파이썬

xmltodict 라이브러리가 가장 간편합니다. 설치 후 세 줄이면 끝납니다.

import xmltodict, json
data = xmltodict.parse(xml_string)
result = json.dumps(data, ensure_ascii=False)

자바스크립트

Node.js 환경이라면 fast-xml-parser가 빠르고 가볍습니다. 브라우저에서는 내장 DOMParser로 XML을 읽은 뒤 객체로 재구성하는 방법도 있습니다.

팁: 라이브러리마다 속성 접두사 기본값이 다릅니다. fast-xml-parser는 기본이 @_이고 xmltodict는 @입니다. 변환 결과의 키 이름이 예상과 다르면 옵션에서 접두사 설정을 먼저 확인하세요.

자바

Jackson 라이브러리의 XmlMapper로 XML을 읽고, 같은 Jackson의 ObjectMapper로 JSON을 출력하는 조합이 표준처럼 쓰입니다.

변환 시 자주 겪는 문제

자동 변환은 편리하지만 데이터 모델 차이 때문에 예상치 못한 결과가 나오기도 합니다. 미리 알아두면 디버깅 시간을 크게 줄일 수 있습니다.

첫째, 단일 요소와 배열 혼동 문제입니다. XML에서 같은 태그가 한 번만 나오면 변환기는 이를 배열이 아닌 단일 객체로 만듭니다. 데이터가 늘어 태그가 여러 개가 되는 순간 구조가 바뀌어버려, 배열로만 처리하던 코드가 깨집니다. 항상 배열이어야 하는 필드는 변환기 옵션에서 강제 배열로 지정하는 것이 안전합니다.

둘째, 데이터 타입 손실입니다. XML은 모든 값을 문자열로 보기 때문에 숫자 123이 변환 후 문자열 "123"이 되기 쉽습니다. 숫자 연산이 필요하다면 변환 후 타입 캐스팅을 따로 해줘야 합니다.

셋째, 특수문자와 인코딩입니다. XML의 &amp;, &lt; 같은 이스케이프 문자가 제대로 디코딩되는지, 한글이 깨지지 않는지 확인해야 합니다. 파이썬에서는 ensure_ascii=False 옵션을 빠뜨리면 한글이 유니코드 코드로 출력됩니다.

변환 작업의 핵심은 두 가지입니다. 일회성이고 데이터가 민감하지 않다면 온라인 변환기로 빠르게 처리하고, 반복되거나 자동화가 필요하다면 언어별 라이브러리로 옵션을 명확히 지정해 코드로 처리하세요. 특히 배열 강제 지정과 타입 캐스팅 두 가지만 챙겨도 변환 후 데이터 때문에 생기는 버그의 대부분을 막을 수 있습니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담