← 모든 도구

JSON → XML 변환기

브라우저에서 JSON을 XML로, XML을 JSON으로 즉시 변환하세요. 로컬 전용·비공개이며 속성, 배열, 네임스페이스, 주의 사항에 대한 설명도 포함됩니다.

JSON과 XML, 두 데이터 세계를 잇는 실용 변환기

대부분의 개발자는 원하든 원하지 않든 XML과 JSON을 모두 다룹니다. 최신 웹 API는 거의 JSON만 사용하지만, 은행·보험사·정부 엔드포인트·기업 ERP·구형 SOAP 서비스에 접근하는 순간 XML이 다시 등장합니다. 이 페이지의 JSON to XML 변환기는 브라우저에서 직접 JSON을 XML로, XML을 JSON으로 변환하므로 민감한 데이터를 외부 서비스에 붙여넣지 않고도 두 형식 사이를 자유롭게 오갈 수 있습니다.

어두운 인디고 배경 위에서 중첩된 JSON 중괄호가 빛을 내며 꺾쇠 태그로 이루어진 XML 트리로 변환되는 모습
JSON 객체와 XML 태그 트리는 같은 데이터를 서로 다른 형태로 표현합니다.

XML과 JSON이란 무엇인가

XML(Extensible Markup Language)은 중첩 태그, 속성, 네임스페이스를 기반으로 한 마크업 형식입니다. 문서 및 구조화된 데이터 교환을 위해 설계되었으며, 스키마(XSD), 네임스페이스, 처리 명령, 주석, CDATA 섹션, 공식 선언 등 풍부한 기능을 제공합니다. 이러한 풍부함 덕분에 XML은 여전히 레거시 및 기업 시스템에서 주류를 이루고 있습니다. SOAP 웹 서비스, RSS·Atom 피드, 설정 파일(Spring, Maven, .NET 앱 설정), 오피스 문서 형식, 그리고 은행과 보험사가 매일 XML을 교환하는 SWIFT·ISO 20022 같은 금융 메시징 표준에서 XML을 찾아볼 수 있습니다.

JSON(JavaScript Object Notation)은 훨씬 단순합니다. 키/값 쌍으로 이루어진 객체, 배열, 문자열, 숫자, 불리언, null이 전부입니다. 거의 모든 프로그래밍 언어의 데이터 구조에 일대일에 가깝게 대응되기 때문에 현대 웹 API, REST 엔드포인트, 모바일 앱, package.json 같은 설정 파일을 장악하게 되었습니다. JSON은 일반적으로 동등한 XML보다 30~50% 더 작고 파싱 속도도 눈에 띄게 빠른데, XML을 장황하게 만드는 닫기 태그와 속성 구조를 생략하기 때문입니다.

변환 시 꼭 알아야 할 핵심 차이점

두 형식은 어느 정도 겹쳐 상호 변환이 가능하지만, 완벽하게 깔끔하지는 않습니다. 몇 가지 구조적 차이가 대부분의 마찰을 일으킵니다.

  • 속성과 자식 노드. XML은 <user id="1">(속성)과 <user><id>1</id></user>(자식 요소)를 구분합니다. JSON에는 이런 개념이 없으므로 변환기가 규칙을 만들어냅니다. 관례적으로 속성은 @attributes 같은 키나 @ 접두사로 접힌 키에, 요소 텍스트는 #text 같은 키에 저장됩니다.
  • 배열. JSON에는 배열이 기본으로 있지만 XML에는 없습니다. XML에서 목록은 같은 태그를 반복하는 방식, 예를 들어 <item> 요소 세 개를 나란히 쓰는 것입니다. 변환기는 반복되는 형제 요소를 JSON 배열로 묶을지, 단일 요소를 일반 객체로 유지할지 추론해야 합니다.
  • 네임스페이스. XML은 스키마 간 이름 충돌을 방지하기 위해 xmlns:soap 같은 접두사를 사용합니다. JSON에는 이에 해당하는 개념이 없으므로 접두사가 키의 문자열 그대로 남거나 제거됩니다.
  • 장황함과 메타데이터. XML은 속성을 통해 노드에 메타데이터를 첨부할 수 있지만, JSON은 모든 것을 키와 값으로 표현합니다. 덕분에 JSON이 더 간결하고 읽기 쉬운 반면, XML은 XSD 스키마를 통한 유효성 검사 능력을 유지합니다.

변환 시 주의해야 할 함정

JSON을 XML로, 다시 XML을 JSON으로 변환했을 때 원래와 동일한 결과를 기대하는 것은 흔한 실수입니다. 규칙을 직접 제어하지 않는 한 변환은 양방향 모두 손실이 발생합니다. 다음 사항을 염두에 두세요.

  • 속성이 뒤틀릴 수 있습니다. JSON을 XML로 변환할 때 도구는 어떤 키가 속성이 되고 어떤 키가 요소가 될지 규칙이 필요합니다. 반대 방향으로 변환할 때 속성은 어딘가에 저장되어야 하는데, 그 "어딘가"(@ 접두사, @attributes 블록)가 라이브러리마다 다릅니다. 다운스트림 파서가 다른 규칙을 기대한다면, 데이터가 손실되지 않았어도 잘못된 것처럼 보입니다.
  • 단일 요소 대 배열. <item>이 하나인 XML 피드는 JSON 객체를 만들고, 두 개인 피드는 JSON 배열을 만듭니다. 배열을 가정한 코드는 단일 항목 케이스에서 오류가 납니다. 이것은 RSS 및 SOAP 파싱 버그의 흔한 원인입니다.
  • 네임스페이스가 남거나 사라집니다. 도구에 따라 soap:Bodysoap:Body라는 이름의 키가 되거나, 접두사가 완전히 제거되어 문서의 의미가 바뀔 수 있습니다.
  • 혼합 콘텐츠와 타입. XML은 모든 것을 텍스트로 처리하므로 true42 같은 값이 JSON으로 변환 후 문자열로 남을 수 있으며, 반대 방향에서는 주석이나 CDATA를 담을 적절한 위치가 없습니다.
시안과 금빛 빛으로 이루어진 추상적인 마크업 노드들이 두 구조화 데이터 트리를 연결하는 모습
형식 간 매핑은 속성, 배열, 네임스페이스를 어떻게 변환할지 결정하는 작업입니다.

로컬 전용 변환이 중요한 이유

JSON과 XML 페이로드는 개발자가 다루는 데이터 중 가장 민감한 경우가 많습니다. 토큰이 담긴 API 응답, 계좌번호가 담긴 SOAP 메시지, 자격증명이 담긴 설정 파일 등이 그 예입니다. 브라우저에서 실행되는 변환기는 이런 데이터를 전혀 업로드하지 않습니다. 파싱과 직렬화는 모두 사용자 기기에서 이루어지며, 서버로 아무것도 전송되지 않고, 페이지가 한 번 로드된 후에는 오프라인에서도 사용할 수 있습니다. 프로덕션 데이터를 디버깅하거나 컴플라이언스 규정이 적용되는 상황에서는, 이 차이가 안전한 빠른 점검과 의도치 않은 데이터 유출 사이를 가릅니다.

결과물을 이후에 정리해야 한다면 다른 데이터 변환기와 함께 사용하거나, 파이프라인의 다음 도구에 넘기기 전에 JSON 포매터로 출력을 정돈하세요.

자주 묻는 질문

변환기가 JSON이나 XML을 어딘가에 업로드하나요?

아니요. JSON to XML 및 XML to JSON 변환은 모두 브라우저에서만 실행됩니다. 데이터는 기기 밖으로 나가지 않으며, 페이지가 로드된 후에는 오프라인에서도 도구를 사용할 수 있습니다.

JSON으로 변환할 때 XML 속성은 어떻게 처리되나요?

JSON에는 기본 속성 개념이 없으므로, XML 속성은 보통 골뱅이(@) 접두사가 붙거나 attributes 블록으로 묶인 전용 키에 배치됩니다. 요소의 텍스트 콘텐츠는 별도로 저장되어 변환 후에도 모두 살아남습니다.

단일 XML 요소가 배열이 아닌 객체가 된 이유는 무엇인가요?

XML에는 기본 배열이 없으므로 목록은 태그를 반복하는 방식으로 표현됩니다. 요소가 하나만 있을 경우 변환기는 그것이 일반 객체인지 배열인지 구분할 수 없어 객체로 처리합니다. 같은 태그 이름을 가진 형제 요소가 두 개 이상이면 JSON 배열로 축소됩니다.

soap이나 xmlns 같은 XML 네임스페이스는 어떻게 되나요?

JSON에는 XML 네임스페이스에 해당하는 개념이 없습니다. 변환 방식에 따라 접두사가 키 내부의 문자열로 그대로 남거나 제거됩니다. 다운스트림 소비자가 네임스페이스 접두사에 의존한다면 출력 결과를 확인하세요.

JSON을 다시 XML로 변환하면 원래 문서를 그대로 얻을 수 있나요?

항상 그렇지는 않습니다. 주석, CDATA, 속성과 요소의 구분 같은 XML 기능에는 JSON에서 완전히 대응되는 것이 없기 때문에 양방향 변환 모두 손실이 발생합니다. 양쪽의 이름 규칙을 직접 제어할 때 라운드트리핑이 가장 잘 작동합니다.

JSON에 비해 XML이 여전히 사용되는 곳은 어디인가요?

XML은 레거시 및 기업 시스템에 남아 있습니다. SOAP 웹 서비스, RSS·Atom 피드, 설정 파일, SWIFT·ISO 20022 같은 금융 메시징이 그 예입니다. JSON은 현대 웹 API, REST 엔드포인트, 모바일 앱을 주도하고 있습니다.