언어 선택

JSON을 XML로 빠르게 변환하기 — 루트 요소 및 포맷팅 옵션 지원

루트 요소 지정, 들여쓰기, 속성 접두사 처리 등 다양한 옵션으로 JSON을 XML로 변환하세요.

Mehmet Demiray 게시일 수정일
공유
중첩 수준당 공백 수

왜 여전히 JSON을 XML로 변환해야 할까?

최근에는 대부분의 신규 시스템이 JSON 기반 API를 사용하지만, 한국 내 금융기관, 공공기관, 대기업 ERP 시스템 등에서는 여전히 XML 기반 인터페이스가 널리 쓰이고 있습니다. 특히 SOAP 프로토콜을 사용하는 레거시 시스템이나 정부 전자조달(G2B) 플랫폼은 XML 입력만을 허용하는 경우가 많습니다. 이러한 환경에서 개발자는 현대적인 JSON 데이터를 XML 형식으로 변환해야만 시스템 간 연동이 가능해집니다. 예를 들어, 모바일 앱에서 수집한 사용자 정보(JSON)를 건강보험공단의 외부 연계 시스템(XML-only)에 전송하려면 반드시 형식 변환이 필요합니다. 이처럼 JSON을 XML로 변환기는 단순한 포맷 변경을 넘어, 신기술과 구형 인프라 사이의 다리 역할을 합니다. Callculation의 'JSON을 XML로 변환기'는 브라우저 내에서 즉시 변환을 수행해 추가 설치나 서버 의존 없이도 안정적으로 연동 작업을 지원합니다. 관련 도구로는 XML을 JSON으로 변환 기능도 유용하게 활용할 수 있습니다.

JSON과 XML 간 구조 매핑 규칙

'JSON을 XML로 변환기'는 JSON의 계층 구조를 XML 요소로 일관되게 매핑합니다. JSON 객체는 하위 요소를 포함하는 XML 태그로 변환되며, 배열은 동일한 이름의 반복 요소로 표현됩니다. 예를 들어, 주문 내역이 담긴 JSON 배열 [{"품명": "삼성 스마트폰", "수량": 2 ea}, {"품명": "LG 노트북", "수량": 1 ea}]는 <주문><품명>삼성 스마트폰</품명><수량>2</수량></주문><주문><품명>LG 노트북</품명><수량>1</수량></주문>처럼 변환됩니다. 전체 JSON은 사용자가 지정한 루트 요소(예: <응답>)로 감싸지며, 이는 XML 문서의 유효성을 보장합니다. 또한 JSON의 null 값은 빈 요소(<비고></비고> 또는 <비고/>)로 처리됩니다. 이러한 규칙은 XML 스키마(XSD)와의 호환성을 고려해 설계되었으며, 특히 물류, 전자세금계산서, 금융 거래 데이터처럼 엄격한 구조를 요구하는 분야에서 중요합니다. 변환 전 JSON 구조를 정리하려면 JSON 포맷터를 먼저 사용하는 것이 좋습니다.

출력 형식 옵션: 선언문, 들여쓰기, 속성 처리

'JSON을 XML로 변환기'는 출력 XML의 형식을 세밀하게 제어할 수 있는 여러 옵션을 제공합니다. 먼저 XML 선언문(<?xml version="1.0" encoding="UTF-8"?>)을 포함할지 여부를 선택할 수 있습니다. 일부 레거시 시스템은 선언문이 없어야 정상 처리하므로 이 설정은 실무에서 매우 중요합니다. 들여쓰기(indent)는 가독성을 위해 공백 2칸, 4칸 또는 탭을 사용할 수 있으며, 자동화된 파이프라인에서는 크기를 줄이기 위해 들여쓰기 없음도 선택 가능합니다. 또한 JSON 키 중 밑줄(_)로 시작하는 항목을 XML 속성으로 처리할지 여부도 설정할 수 있습니다. 예를 들어, {"_id": "ORD-2024-001", "고객명": "김철수"}를 속성 모드로 변환하면 <주문 id="ORD-2024-001"><고객명>김철수</고객명></주문>처럼 출력됩니다. 이 기능은 XML 스키마에서 속성 기반 식별자를 요구할 때 유용합니다. 변환 후 결과는 클립보드 복사나 로컬 파일(.xml) 다운로드로 즉시 활용할 수 있습니다.

주의할 점: 유효하지 않은 요소 이름과 특수문자 처리

JSON 키 이름이 XML 요소 이름으로 사용되기 때문에 몇 가지 제약 사항이 있습니다. XML 요소 이름은 숫자로 시작할 수 없으며, 공백, 하이픈(-), 마침표(.) 등을 포함해서는 안 됩니다. 예를 들어, JSON 키가 "2024년도_매출"이라면 XML 요소로 변환 시 오류가 발생합니다. 이런 경우 키 이름을 미리 "매출_2024"처럼 수정해야 합니다. 또한 JSON 문자열 내에 포함된 특수문자(&, <, > 등)는 자동으로 XML 엔티티로 이스케이프됩니다. 예를 들어, "비고": "A&B 협력업체"는 <비고>A&amp;B 협력업체</비고>로 출력되어 XML 파서가 오류 없이 해석할 수 있습니다. 하지만 키 자체에 &나 <가 포함된 경우 변환 전에 반드시 정리해야 합니다. null 값은 빈 요소로 처리되며, 이를 특정 속성(예: xsi:nil="true")으로 표시해야 하는 경우는 현재 지원되지 않으므로 후처리가 필요할 수 있습니다. 이러한 제약은 XML 언어 규격 자체에서 비롯된 것이며, 변환 전 JSON 검증을 통해 문제를 사전에 방지할 수 있습니다.

실무 팁: 루트 요소 지정과 배열 처리

Callculation의 'JSON을 XML로 변환기'를 사용할 때 가장 자주 묻는 질문 중 하나는 "루트 요소를 어떻게 설정하나요?"입니다. 변환기 인터페이스에서 '루트 요소 이름'란에 원하는 태그 이름(예: 응답, 주문목록, 데이터)을 입력하면 됩니다. 이는 XML 문서가 단일 루트 요소를 가져야 한다는 규칙을 충족시키는 데 필수적입니다. 또 다른 핵심은 배열 처리입니다. JSON 배열은 동일한 이름의 요소를 반복 생성합니다. 예를 들어, 고객의 주소 목록이 [{"시도": "서울특별시", "구군": "강남구"}, {"시도": "부산광역시", "구군": "해운대구"}]라면 <주소><시도>서울특별시</시도><구군>강남구</구군></주소><주소><시도>부산광역시</시도><구군>해운대구</구군></주소>처럼 변환됩니다. 이 방식은 대부분의 XML 기반 시스템에서 배열을 표현하는 표준 관행과 일치합니다. 다만, 빈 배열([])은 아무 요소도 생성하지 않으므로, 이를 명시적으로 처리해야 하는 시스템이라면 JSON 구조를 조정해야 합니다. XML 결과를 다시 JSON으로 되돌릴 일이 있다면 XML to JSON 변환기를 함께 활용하세요.

가장 많이 받는 질문

JSON 배열은 XML로 변환할 때 어떻게 표현되나요?

JSON 배열은 동일한 이름의 XML 요소가 반복되는 형태로 변환됩니다. 예를 들어, {"items": [1, 2]}는 <items>1</items><items>2</items>처럼 나타납니다. 이 방식은 대부분의 XML 파서와 호환되며, XML to JSON 변환기를 사용해 다시 원래 구조로 복원할 수도 있습니다.

루트 요소 이름을 직접 지정하려면 어떻게 해야 하나요?

변환기 옵션에서 '루트 요소 이름' 필드에 원하는 이름을 입력하면 됩니다. 기본값은 'root'이지만, 시스템 요구사항에 맞게 'response', 'data' 등으로 변경할 수 있습니다. 단, 요소 이름은 XML 규칙(예: 숫자로 시작 불가)을 따라야 정상적으로 변환됩니다.

&나 < 같은 특수 문자도 자동으로 이스케이프되나요?

네, XML 표준에 따라 &, <, >, ", ' 같은 특수 문자는 자동으로 &amp;, &lt;, &gt;, &quot;, &apos;로 이스케이프됩니다. 따라서 변환된 XML은 파싱 오류 없이 안전하게 사용할 수 있습니다.

JSON 키가 숫자로 시작하면 어떻게 되나요? 예: "1st_item"

XML 요소 이름은 숫자로 시작할 수 없으므로, "1st_item" 같은 키는 변환 시 오류가 발생하거나 유효한 이름으로 자동 조정됩니다. 가능하면 키 이름을 "item_1st"처럼 알파벳으로 시작하도록 사전에 수정하는 것이 좋습니다. 자세한 규칙은 JSON 포매터에서 미리 점검할 수 있습니다.

JSON의 null 값은 XML에서 어떻게 처리되나요?

JSON의 null 값은 빈 요소로 변환됩니다. 예를 들어, {"name": null}은 <name></name> 또는 <name/> 형태로 출력됩니다. 이는 XML 스키마에서 null을 명시적으로 표현해야 하는 경우 추가 속성 처리가 필요할 수 있음을 의미합니다.

변환된 XML에 XML 선언(<?xml version="1.0"?>)을 넣고 싶지 않은데요?

옵션에서 'XML 선언 포함' 체크박스의 선택을 해제하면 선언 없이 순수 XML 콘텐츠만 출력됩니다. 이는 일부 레거시 시스템이나 내부 API에서 선언을 허용하지 않을 때 유용합니다.

속성 대신 요소로만 변환하고 싶은데, 가능한가요?

현재 JSON을 XML로 변환기는 모든 값을 요소로 처리하며, 속성(attribute) 기반 변환은 지원하지 않습니다. JSON 구조가 평면적이라면 JSON to CSV 변환기를 고려해 보는 것도 방법입니다.