XML ⇄ JSON

어느 형식이든 붙여 넣으면 입력하는 대로 반대 형식이 나타납니다.

사용 방법

  1. 상자에 XML이나 JSON을 붙여 넣으세요. 버튼 없이 입력하는 즉시 결과가 그려집니다. 방향은 첫 글자(XML은 <, JSON은 [ 또는 {)로 감지해 결과 위에 표시하므로 확인할 수 있습니다.
  2. 방향을 잘못 추측했다면 XML → JSON 또는 JSON → XML을 고르세요. 아래 옵션은 방향에 따라 바뀝니다. XML → JSON은 「숫자·불리언 감지」를, JSON → XML은 배열을 감쌀 「루트 이름」을 보여 줍니다.
  3. 결과를 복사하거나 다운로드하세요. 둘 다 화면에 보이는 텍스트를 그대로 쓰며 파일 이름은 data.json 또는 data.xml입니다. 「예시 불러오기」는 활성 방향에 맞는 예시를 채웁니다.

예시

입력 (XML)

<note id="1"><to>Alice</to><from>Bob</from><body>Hi!</body></note>

출력 (JSON)

{
  "note": {
    "@id": "1",
    "to": "Alice",
    "from": "Bob",
    "body": "Hi!"
  }
}

id 속성은 「@id」가 되고, 각 자식 요소는 키가 되며, <body> 안의 텍스트는 문자열 값이 됩니다. 「숫자·불리언 감지」를 끄면 id를 포함한 모든 값이 텍스트로 유지됩니다.

규칙, 제한 및 알려진 문제

  • 파일 업로드, 끌어다 놓기, URL 가져오기는 없습니다. 텍스트를 붙여 넣으세요. 드롭 영역은 결과에 필요한 높이를 잡아먹고, 파일을 제대로 읽으려면 비UTF-8 인코딩(GB18030, Big5, Windows-1256)을 다뤄야 합니다. XML 포매터에서 파일을 열고 텍스트를 복사하세요.
  • 입력은 100만 자로 제한됩니다. 20만 자를 넘으면 입력을 멈출 때까지 기다렸다가 결과를 내고 그 사실을 알려 줍니다. 한도를 넘으면 명시적 오류가 나오며 입력을 조용히 자르지 않습니다.
  • 매핑은 일부러 고정했습니다. 요소는 객체가 되고, 속성은 「@name」, 요소 텍스트는 「#text」, 자식 요소는 키가 되며, 이름이 같은 자식 여러 개는 배열이 됩니다. 텍스트만 있는 말단 요소는 문자열이 되어 깊이 중첩된 문서도 읽기 쉽습니다.
  • 타입 감지(XML → JSON)는 보수적입니다. true / false / null(소문자만)과 엄격한 JSON 숫자만 실제 타입으로 바꿉니다. 앞자리 0이 있는 정수(00501)와 16자리 이상 숫자는 문자열로 남고, 스위치를 끄면 나머지도 모두 텍스트로 남습니다. XML 속성은 본래 텍스트이므로 항상 텍스트로 유지하고 타입을 바꾸지 않습니다.
  • JSON → XML은 단일 루트가 필요하므로 최상위 객체는 그 하나의 키를 루트 요소로 씁니다. 최상위 JSON 배열은 단일 루트가 없어 「루트 이름」 요소로 감싸고, 각 항목은 반복 자식(기본 이름 「item」)이 됩니다.
  • 키 아래의 JSON 값은 객체, 배열, 문자열, 숫자, true / false, null이 될 수 있습니다. 「@name」 키는 속성이 되고(null/undefined는 건너뜀), 「#text」는 요소 텍스트가 되며, 다른 키는 모두 자식 요소가 됩니다. 배열은 반복 요소를 만듭니다.
  • XML 주석, 처리 명령(<? … ?>), DOCTYPE은 버리고 개수를 셉니다(JSON에 표현할 수 없음). CDATA는 텍스트로 유지합니다. 자식 요소 옆에 있는 텍스트인 혼합 콘텐츠는 「#text」로 펼쳐지고 원래 순서는 보존되지 않으며, 해당 요소 수를 알려 주어 확인할 수 있습니다.
  • JSON은 엄격하게 해석합니다. 주석, 끝 쉼표, 작은따옴표, 이스케이프되지 않은 제어 문자를 허용하지 않으며 중첩은 64단계까지입니다. 한 줄에 객체 하나(JSON Lines)는 받지 않으니 먼저 배열로 감싸세요.
  • XML 엔티티 참조(&amp; &lt; &gt;)는 텍스트와 속성에 그대로 유지하며(해독하지 않음) 왕복 시 정확한 바이트를 재현합니다. JSON → XML 쪽에서 이스케이프를 추가합니다. 텍스트의 & < >와 속성 값의 "를 이스케이프합니다.
  • 범위 밖: XSLT, XPath, XML 스키마 검증, 태그 이름의 일부가 아닌 네임스페이스 처리, 중복 키가 있는 JSON(JSON.parse처럼 마지막 값이 이김), 주석 순서 보존. 업로드, 저장, URL 기록은 없습니다.

데이터를 다른 형식으로 바꾼 뒤 흔히 이어서 찾는 도구입니다.