JSON to XML 변환 방법 총정리 - 실무에서 바로 쓰는 변환 가이드
JSON 데이터를 XML로 변환해야 할 때 당황하지 마세요. 온라인 도구부터 코드 변환까지 실무에서 바로 적용할 수 있는 방법을 정리했습니다.
![]()
API 연동 작업을 하다 보면 한쪽은 JSON, 다른 쪽은 XML만 받는 상황을 만나게 됩니다. 특히 레거시 시스템이나 금융권 API, 전자정부 표준 프레임워크와 연동할 때 JSON to XML 변환은 피할 수 없는 과정입니다. 복잡해 보이지만 원리만 알면 어렵지 않습니다.
JSON to XML 변환이 필요한 상황
최근 대부분의 REST API는 JSON을 기본 포맷으로 사용합니다. 하지만 여전히 XML이 필수인 영역이 존재합니다.
- SOAP 기반 웹서비스 연동 - 금융권, 공공기관 API의 약 60% 이상이 아직 SOAP/XML 방식을 사용합니다
- 전자문서 표준 - 전자세금계산서(e-Tax), RSS 피드, 사이트맵(sitemap.xml) 등은 XML 형식이 표준입니다
- 레거시 시스템 통합 - 기존 ERP, CRM 시스템 중 상당수가 XML 기반으로 데이터를 주고받습니다
- 설정 파일 마이그레이션 - Maven pom.xml, Android 레이아웃 파일 등 특정 플랫폼은 XML이 기본입니다
JSON to XML 변환의 핵심은 데이터 구조를 그대로 유지하면서 포맷만 바꾸는 것입니다. 데이터 손실 없이 변환하려면 두 포맷의 구조적 차이를 먼저 이해해야 합니다.
JSON과 XML 구조 차이 한눈에 보기
JSON to XML 변환을 제대로 하려면 두 포맷의 근본적인 차이를 알아야 합니다. 아래 표에서 핵심 차이점을 비교해 보겠습니다.
| 비교 항목 | JSON | XML |
|---|---|---|
| 기본 단위 | 키-값 쌍 (key:value) | 태그 요소 (<tag>value</tag>) |
| 배열 표현 | 대괄호 [ ]로 간단하게 | 같은 태그를 반복하거나 래퍼 태그 필요 |
| 데이터 타입 | 문자열, 숫자, 불리언, null 구분 | 모든 값이 문자열 (타입 정보 없음) |
| 속성(Attribute) | 지원 안 함 | <tag attr="값"> 형태로 지원 |
| 루트 요소 | 필수 아님 | 반드시 1개의 루트 요소 필요 |
| 주석 | 지원 안 함 | <!-- 주석 --> 지원 |
| 파일 크기 | 상대적으로 작음 | 태그 반복으로 30-50% 더 큼 |
이 차이점 때문에 변환 과정에서 몇 가지 결정을 내려야 합니다. 예를 들어 JSON 배열을 XML로 바꿀 때 래퍼 태그를 사용할지, 같은 이름의 태그를 반복할지 선택해야 합니다.
온라인 도구로 빠르게 변환하기
코드를 작성할 필요 없이 바로 JSON to XML 변환이 필요한 경우가 있습니다. 테스트 데이터 확인이나 일회성 변환 작업이 대표적입니다.
온라인 변환 도구 사용법
대부분의 온라인 변환 도구는 비슷한 방식으로 동작합니다.
- 1단계 - 왼쪽 입력창에 JSON 데이터를 붙여넣기합니다
- 2단계 - 변환 버튼을 클릭합니다
- 3단계 - 오른쪽 출력창에서 XML 결과를 복사합니다
변환 전에 JSON 데이터가 올바른 형식인지 확인하는 것이 중요합니다. 쉼표 하나가 빠져도 변환이 실패할 수 있기 때문입니다. JSON 포매터 같은 도구로 먼저 JSON 구조를 검증하고 정리하면 변환 오류를 줄일 수 있습니다.
변환 도구 선택 기준
온라인 JSON to XML 변환 도구를 고를 때 확인해야 할 사항이 있습니다. 한글 인코딩(UTF-8) 지원 여부, 배열 변환 방식 설정 옵션, 그리고 XML 선언문 자동 추가 기능 등을 확인하세요.
프로그래밍 언어별 변환 코드
반복적인 JSON to XML 변환 작업이라면 코드로 자동화하는 것이 효율적입니다. 주요 언어별 변환 방법을 살펴보겠습니다.
Python - dicttoxml 라이브러리
Python은 dicttoxml 라이브러리를 사용하면 가장 간단합니다. pip install dicttoxml로 설치한 뒤, JSON 데이터를 딕셔너리로 파싱하고 dicttoxml() 함수에 전달하면 됩니다. 커스텀 루트 태그 이름은 custom_root 파라미터로 지정할 수 있습니다.
JavaScript - xml2js / fast-xml-parser
Node.js 환경에서는 fast-xml-parser의 XMLBuilder 클래스가 가장 빠릅니다. 브라우저에서 직접 변환하려면 가벼운 유틸리티 함수를 작성하는 방법도 있습니다. JSON 객체를 재귀적으로 순회하며 XML 문자열을 조립하는 방식입니다.
Java - Jackson + jackson-dataformat-xml
Java에서는 Jackson 라이브러리의 XML 확장 모듈을 사용합니다. ObjectMapper로 JSON을 읽고, XmlMapper로 XML을 출력하는 2단계 과정입니다. Spring 프로젝트라면 이미 Jackson이 포함되어 있으므로 XML 모듈만 추가하면 됩니다.
변환 시 주의해야 할 규칙 5가지
JSON to XML 변환에서 가장 많이 발생하는 실수들을 정리했습니다. 이 규칙만 기억하면 대부분의 변환 오류를 예방할 수 있습니다.
- 루트 요소 필수 - XML은 반드시 하나의 루트 요소로 감싸야 합니다. JSON 최상위가 배열이라면
<root>또는 의미 있는 래퍼 태그를 추가하세요 - 태그 이름 제약 - JSON 키에 숫자로 시작하거나 공백, 특수문자가 포함된 경우 XML 태그명으로 사용할 수 없습니다.
_(언더스코어)로 치환하는 것이 일반적입니다 - 배열 변환 방식 통일 - 하나의 프로젝트 내에서 배열을 변환하는 방식을 일관되게 유지하세요. 래퍼 태그 방식과 반복 태그 방식을 혼용하면 파싱이 어려워집니다
- null 값 처리 - JSON의 null은 XML에서 빈 태그(
<key/>), 태그 생략, 또는xsi:nil="true"속성으로 표현할 수 있습니다. 수신 측 파서 사양을 확인하세요 - 인코딩 선언 - XML 선언문에
<?xml version="1.0" encoding="UTF-8"?>을 반드시 포함하세요. 한글 데이터가 포함된 경우 인코딩 누락은 파싱 에러의 주요 원인입니다
실무 적용 팁과 자동화 방법
일회성이 아닌 지속적인 JSON to XML 변환이 필요하다면 자동화 파이프라인을 구축하는 것이 좋습니다.
CLI 도구 활용
터미널에서 바로 변환하려면 yq나 xq 같은 CLI 도구가 유용합니다. cat data.json | yq -x 한 줄로 변환이 완료됩니다. CI/CD 파이프라인에 포함시키기에도 적합합니다.
XSLT와 결합하기
변환된 XML을 특정 스키마에 맞춰야 한다면 XSLT 변환을 추가로 적용하세요. JSON에서 기본 XML로 변환한 뒤, XSLT 스타일시트로 원하는 구조로 재배치하는 2단계 전략이 유연합니다.
API 게이트웨이에서 변환
마이크로서비스 환경이라면 API 게이트웨이 레벨에서 JSON to XML 변환을 처리하는 방법도 있습니다. AWS API Gateway, Kong, Apigee 등은 요청/응답 본문을 자동 변환하는 기능을 지원합니다. 개별 서비스 코드를 수정하지 않아도 되는 장점이 있습니다.
검증 자동화
변환 결과가 올바른지 자동으로 확인하는 과정을 꼭 포함하세요. XML Schema(XSD)를 정의해 두면 변환 결과를 자동 검증할 수 있습니다. 잘못된 XML이 후속 시스템에 전달되면 디버깅이 훨씬 어려워집니다.
JSON to XML 변환은 어렵지 않지만, 세부 규칙을 무시하면 예상치 못한 오류로 시간을 낭비하게 됩니다. 지금 바로 할 수 있는 두 가지를 제안합니다. 먼저 현재 프로젝트에서 사용하는 JSON 샘플 데이터로 변환 테스트를 해보세요. 그리고 배열 처리 방식과 null 값 처리 방식을 팀 내에서 합의해 문서화하세요. 이 두 가지만 정해도 향후 연동 작업에서 발생하는 문제의 80%를 예방할 수 있습니다.