XML ⇄ JSON 변환기

이 도구에 대하여

XML과 JSON을 상호 변환한다. 라운드 트립(그대로 변환→그대로 복원)을 중시하도록 로직을 손봤다.
기본값에서는 동일 이름 요소를 배열로 강제 옵션을 끄고, 2개 이상 존재할 때만 배열로 만든다.
JSON 루트가 배열이면 XML은 <root><item>…</item>…</root>로 표현하고, XML→JSON 변환 시 이 구조를 배열로 복원한다. 모든 처리는 브라우저 안에서 이루어지며 데이터는 전송되지 않는다.

XML ⇄ JSON 변환

사용 방법

  1. 왼쪽 입력 영역에 XML 또는 JSON을 붙여 넣는다.
  2. XML → JSON 또는 JSON → XML 버튼을 눌러 변환한다.
  3. 필요하면 인덴트 폭, 속성/텍스트 키, 네임스페이스 유지, 배열 처리 방식을 조정한다.
  4. 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 측의 타입 어노테이션 등으로 회피할 수 있는 경우도 있으나, 완전한 등가를 보장하기는 어렵다.