XML ⇄ JSON 변환기
이 도구에 대하여
XML과 JSON을 상호 변환한다. 라운드 트립(그대로 변환→그대로 복원)을 중시하도록 로직을 손봤다.
기본값에서는 동일 이름 요소를 배열로 강제 옵션을 끄고, 2개 이상 존재할 때만 배열로 만든다.
JSON 루트가 배열이면 XML은 <root><item>…</item>…</root>
로 표현하고, XML→JSON 변환 시 이 구조를 배열로 복원한다.
모든 처리는 브라우저 안에서 이루어지며 데이터는 전송되지 않는다.
XML ⇄ JSON 변환
—
사용 방법
- 왼쪽 입력 영역에 XML 또는 JSON을 붙여 넣는다.
- XML → JSON 또는 JSON → XML 버튼을 눌러 변환한다.
- 필요하면 인덴트 폭, 속성/텍스트 키, 네임스페이스 유지, 배열 처리 방식을 조정한다.
- Validate 버튼으로 구문을 검사한다.
샘플
XML → JSON:
<user id="42">
<name>Taro</name>
<role>admin</role>
<role>editor</role>
</user>
{
"user": {
"@id": "42",
"name": "Taro",
"role": ["admin", "editor"]
}
}
보충
- 속성은
[속성 접두사][속성 이름]
형태로 표현한다(기본값은@id
등). - 요소 본문은
[텍스트 키]
에 담긴다(기본값#text
). - 같은 이름의 요소는 기본적으로 단일 값으로 유지하며, 2개 이상일 때만 배열로 전환한다.
- JSON 루트가 배열이면 XML은
<root><item>…</item>…</root>
로 표현한다(아이템 이름은 변경 가능). - 비어 있는 요소는 텍스트와 속성이 모두 없으면 빈 객체
{}
로 출력된다.
주의 사항(등가성 한계)
가능한 한 “원본 JSON” → XML → “복원된 JSON” 순서를 거쳐도 동일한 구조가 나오도록 조정했지만, 아래와 같은 경우는 한계로 남는다.
원본 JSON:
"urls": [
"admin.microsoft.com"
],
"expressRoute": false,
"id": 160,
복원된 JSON:
"urls": "admin.microsoft.com",
"expressRoute": "false",
"id": "160",
※ XML과 JSON이 타입을 다루는 방식이 달라 발생한다. XML 측의 타입 어노테이션 등으로 회피할 수 있는 경우도 있으나, 완전한 등가를 보장하기는 어렵다.