XML을 JSON으로 변환하는 방법
- XML을 붙여넣거나,
.xml파일을 편집기에 끌어다 놓거나, URL에서 불러옵니다. 입력하는 대로 JSON이 표시됩니다. - 속성 접두사와 텍스트 키를 조정하고, 항상 배열 사용, 숫자·불리언 변환, 네임스페이스 접두사 무시 여부를 정합니다.
- JSON을 복사하거나
.json파일로 다운로드합니다.
XML이 JSON으로 변환되는 규칙
| XML | JSON |
|---|---|
<name>Ada</name> | "name": "Ada" |
<price>9.90</price> | "price": 9.90 – 숫자 자릿수 그대로 유지 |
<item id="7">Pen</item> | "item": {"@id": 7, "#text": "Pen"} |
<tag>a</tag><tag>b</tag> | "tag": ["a", "b"] |
<note/> | "note": null |
<![CDATA[a < b]]> | 텍스트 "a < b" |
네임스페이스 접두사 무시 옵션 사용 시 <soap:Body> | "Body" |
“항상 배열로 변환” 옵션이 중요한 이유
한 번 나오는 요소는 단일 값이 되지만, 두 번 나오면 배열이 됩니다. 그러면 JSON을 읽는 코드가 두 가지 형태를 모두 처리해야 하는데, 목록에 항목이 하나뿐일 때 생기는 전형적인 버그의 원인입니다. 하위 요소를 항상 배열로 변환을 체크하면 모든 곳에서 배열이 만들어집니다. 대괄호가 조금 늘어나는 대신 구조를 예측할 수 있습니다.
코드에서 XML을 JSON으로 변환하기
- Python:
xmltodict.parse(text)(xmltodict 패키지) - JavaScript:
new XMLParser({ ignoreAttributes: false }).parse(text)(fast-xml-parser 패키지) - C#:
JsonConvert.SerializeXmlNode(doc)(Newtonsoft.Json) - 명령줄:
yq -p xml -o json file.xml
자주 묻는 질문
변환 과정에서 손실되는 데이터가 있나요?
요소 이름, 속성, 텍스트는 유지되며 숫자도 자릿수가 그대로 보존됩니다. 다만 주석, 처리 명령, 하위 요소 사이에 있는 텍스트의 위치(혼합 콘텐츠)는 JSON으로 표현할 수 없습니다.
JSON을 다시 XML로 변환할 수 있나요?
네. 자매 사이트 JSON Formatter의 JSON XML 변환기를 사용하세요. 같은 @, #text 규칙을 사용합니다.
네임스페이스는 어떻게 처리되나요?
기본적으로 soap:Body 같은 접두사 붙은 이름은 그대로 키가 되고, xmlns 선언은 속성으로 나타납니다. 네임스페이스 접두사 무시를 체크하면 선언 없이 Body 같은 단순한 이름만 남습니다.
값이 왜 숫자가 아니라 문자열로 나오나요?
007, 1,000 같은 값은 일반 십진수가 아니므로 데이터 손실을 막기 위해 문자열로 유지됩니다. 모든 값을 문자열로 두려면 숫자와 true/false 값 변환 체크를 해제하세요.