Skip to content

JSON to XML 변환기

JSON을 붙여넣으면 즉시 XML로 변환됩니다. 객체, 배열, @_ 속성을 브라우저에서 변환 — 업로드 없음. 무료, 개인 정보 보호, 회원가입 불필요.

트래킹 없음 브라우저 실행 무료
옵션 · 2칸 · JSON → XML
들여쓰기
0
XML 출력
0
XML 1.0 형식 일치성, @_/#text 관례 정확성, 루트 정규화 정확성에 대해 검토 완료 — Go Tools Engineering Team · May 29, 2026

JSON-to-XML 변환이란 무엇이며 어떻게 작동하나요?

JSON(JavaScript Object Notation)과 XML(Extensible Markup Language)은 모두 구조화된 데이터 형식이지만 근본적으로 다른 모델을 가집니다: JSON은 속성이나 문서 루트 제약 개념이 없는 객체, 배열, 문자열, 숫자, 불리언, null 값의 트리이고, XML은 속성과 텍스트 내용을 포함하는 요소의 트리로 문서에 정확히 하나의 루트 요소가 있어야 합니다. JSON에서 XML로 변환하려면 이 불일치를 해소하기 위한 관례가 필요합니다.

이 도구는 fast-xml-parser(Node.js), xmltodict(Python), JAXB(Java)에서 사용하는 것과 동일한 가장 널리 채택된 관례를 역방향으로 적용합니다:

**1. 루트 요소 정규화.** JSON과 XML의 가장 중요한 차이는 루트 제약입니다. JSON에는 루트 개념이 없지만 XML은 정확히 하나를 요구합니다. 변환기는 네 가지 경우를 자동으로 처리합니다. 단일 키 객체는 해당 키를 XML 루트로 사용합니다: { "config": {...} }는 ...가 됩니다. 다중 키 객체는 로 감싸집니다: { "a": 1, "b": 2 }는 12가 됩니다. 최상위 배열은 ...로 감싸집니다. 기본 값은 으로 감싸집니다.

**2. @_ 접두사 → XML 속성.** @_ 접두사가 붙은 JSON 키는 포함하는 요소의 XML 속성이 됩니다. { "element": { "@_id": "42", "@_class": "primary" } }는 를 생성합니다. 이 접두사는 표준 관례입니다 — 유효한 XML 요소 이름은 @로 시작할 수 없으므로 자식 요소 이름과 충돌이 없습니다.

**3. #text → 요소 텍스트 내용.** 요소에 속성과 텍스트 내용이 모두 필요할 때 텍스트는 #text 키 아래에 저장됩니다: { "price": { "@_currency": "USD", "#text": "29.99" } }는 29.99가 됩니다. 텍스트 내용만 있는 요소(@_ 키 없음)는 이 간접 참조 없이 일반 텍스트 요소로 변환됩니다.

**4. 배열 → 반복되는 같은 이름의 형제 요소.** XML은 같은 이름을 가진 여러 자식 요소를 허용하고, JSON은 정렬된 목록에 배열을 사용합니다. 키 아래의 JSON 배열은 키 이름을 재사용하는 반복 자식 요소를 생성합니다: { "items": ["a", "b"] }는 부모 아래에 형제인 ab를 생성합니다. 전체 JSON 입력이 최상위 배열인 경우 감싸기가 추가되고 각 요소가 자식이 됩니다 — 은 그 경우에만 사용되는 고정 대체 이름입니다.

**5. XML-to-JSON과 대칭.** 여기서 사용하는 @_와 #text 관례는 동반 도구인 XML to JSON 변환기에서 사용하는 관례와 정확히 동일합니다. 즉 JSON → XML → JSON 왕복 변환은 입력 JSON이 @_/#text 관례를 따르는 한 속성, 텍스트 내용, 요소 구조를 보존합니다.

**언제 JSON을 XML로 변환하나요?** 가장 일반적인 시나리오는: (1) XML 요청 본문을 요구하는 레거시 SOAP 또는 XML 기반 웹 서비스에 데이터 전송; (2) JSON 데이터에서 XML 설정 파일(Spring, Maven, Ant, Android 리소스) 생성 또는 변환; (3) JSON 콘텐츠 데이터에서 sitemap.xml 또는 RSS 피드 XML 생성; (4) XML을 소비하는 기업 시스템(ERP, CRM, EDI)과의 상호 운용; (5) JSON 데이터에서 SVG 또는 기타 XML 기반 그래픽 형식을 프로그래밍 방식으로 생성. 생성된 XML을 포맷팅하고 유효성 검사하려면 XML 포맷터를 사용하세요.

// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';

const data = {
  catalog: {
    product: {
      '@_id': 'P01',
      '@_category': 'electronics',
      name: 'Wireless Headphones',
      price: {
        '@_currency': 'USD',
        '#text': '79.99'
      }
    }
  }
};

const builder = new XMLBuilder({
  attributeNamePrefix: '@_',   // @_ keys become XML attributes
  textNodeName: '#text',       // #text key becomes element text content
  ignoreAttributes: false,     // process @_ attribute keys
  format: true,                // pretty-print with indentation
  indentBy: '  ',              // 2-space indent
});

const xml = builder.build(data);
console.log(xml);
// <catalog>
//   <product id="P01" category="electronics">
//     <name>Wireless Headphones</name>
//     <price currency="USD">79.99</price>
//   </product>
// </catalog>

주요 기능

실시간 변환

JSON을 입력하거나 붙여넣으면 XML 출력이 즉시 업데이트됩니다 — 변환 버튼이 필요 없습니다. 대용량 입력(>200KB)은 자동으로 수동 모드로 전환하여 브라우저 응답성을 유지합니다.

자동 루트 정규화

XML은 정확히 하나의 루트 요소를 요구합니다. 단일 키 객체는 해당 키를 루트로 사용하고, 다중 키 객체는 로 감싸지며, 최상위 배열은 ...가 되고, 기본 값은 이 됩니다 — 항상 유효한 XML 출력.

@_ 속성 및 #text 관례

@_ 접두사가 붙은 키는 XML 속성이 되고, #text 키는 요소의 텍스트 내용이 됩니다. fast-xml-parser와 xmltodict 관례와 일치하여 출력이 동반 XML to JSON 변환기와 대칭적으로 동작합니다.

배열에서 반복 요소로

키 아래의 JSON 배열은 키 이름을 재사용하는 반복 자식 요소를 생성합니다 — 단수화 없음. { "items": [1, 2, 3] }는 세 개의 형제를 생성합니다. 최상위 배열 입력은 을 고정 리터럴 이름으로 사용하여 ...로 감싸집니다.

100% 브라우저 기반 개인 정보 보호

모든 변환은 JavaScript를 사용하여 브라우저에서 로컬로 실행됩니다. 자격 증명, 내부 설정, 민감한 페이로드를 포함한 JSON은 어떤 서버로도 전송되지 않고, 기록되지 않으며, 저장되지 않습니다.

XML to JSON과 대칭 왕복 변환

@_와 #text 관례는 동반 XML to JSON 변환기와 공유됩니다. JSON → XML → JSON 왕복 변환은 속성, 텍스트 내용, 중첩 구조를 충실히 보존합니다.

예시

API 응답 객체

{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}}

최상위 키가 XML 루트 요소가 되는 단일 키 JSON 객체입니다. 중첩된 address 객체는 자식을 포함하는

자식 요소를 생성합니다. 외부 객체에 정확히 하나의 키("user")가 있으므로 감싸는 요소가 추가되지 않습니다 — "user" 자체가 루트입니다. 42 같은 숫자는 텍스트 내용으로 그대로 표현됩니다: 42.

최상위 배열

[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}]

전체 입력이 JSON 배열(객체로 감싸지지 않은)인 경우 변환기는 ...를 생성합니다. 각 배열 요소는 자식이 됩니다 — "item"은 최상위 배열에만 사용되는 고정 리터럴 감싸기 이름입니다. 이 나타나는 유일한 경우는 이것입니다; 객체 키 아래의 배열은 모든 요소에 해당 키 이름을 재사용합니다.

속성과 텍스트 내용이 있는 객체

{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}}

@_ 접두사가 붙은 키는 요소의 XML 속성이 됩니다: @_id는 요소에서 id="P01"이 되고 @_category는 category="electronics"가 됩니다. #text 키는 요소의 텍스트 내용이 됩니다 — 따라서 price 객체는 79.99를 생성합니다. 이는 같은 @_와 #text 관례를 사용하는 XML to JSON 변환기와 깔끔하게 왕복 변환됩니다.

사용 방법

  1. 1

    JSON 붙여넣기

    위 입력 필드에 JSON 데이터를 입력하거나 붙여넣으세요. '예시 불러오기'를 클릭하여 샘플을 사용해 볼 수도 있습니다 — API 응답 객체, 배열 페이로드, @_ 속성과 #text를 사용하는 객체.

  2. 2

    실시간 XML 출력 확인

    XML이 즉시 출력 패널에 표시됩니다. 단일 키 객체는 해당 키를 루트로 사용하고, 다중 키 객체는 로 감싸지며, @_ 접두사가 붙은 키는 속성이 되고, 배열은 반복 자식 요소가 됩니다. 필요에 따라 들여쓰기(2칸 또는 4칸)를 조정하세요.

  3. 3

    복사 또는 다운로드

    복사를 클릭하여 XML을 클립보드에 저장하거나 다운로드를 클릭하여 .xml 파일로 저장하세요. 결과를 유효성 검사하거나 재포맷하려면 XML 포맷터에 붙여넣으세요.

일반적인 변환 함정

다중 키 객체에 예상치 않은 감싸기

최상위 JSON에 여러 키가 있으면 출력이 모두 로 감싸집니다. 이것은 올바른 XML(단일 루트를 요구하는)이지만 대상 스키마와 일치하지 않을 수 있습니다. 루트 요소 이름을 제어하려면 JSON을 단일 키 객체로 재구성하세요.

✗ 오류
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema
✓ 정상
// Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response>

최상위 배열에 감싸기

최상위 JSON 배열에는 요소 이름이 없으므로 ...로 감싸집니다. 의미 있는 태그 이름을 원한다면 먼저 명명된 객체로 배열을 감싸세요.

✗ 오류
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic
✓ 정상
// Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag

속성 키에 @_ 접두사 누락

XML 속성을 생성하려면 JSON 키에 @_ 접두사가 붙어야 합니다. 접두사 없이는 키가 속성이 아닌 자식 요소로 처리됩니다.

✗ 오류
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag>  ← id is a child element
✓ 정상
// Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag>  ← id is an attribute

속성과 텍스트가 모두 있는 요소 — #text 누락

요소에 XML 속성과 텍스트 내용이 모두 필요하다면 텍스트에 #text 키를 사용해야 합니다. 없으면 텍스트가 들어갈 곳이 없어 요소가 비어 있거나 오류가 발생합니다.

✗ 오류
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content
✓ 정상
// Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price>  ← text content

XML에서 유효하지 않은 문자가 포함된 JSON 키

XML 요소 이름은 숫자로 시작할 수 없으며 공백, 콜론(네임스페이스 접두사 제외), 대부분의 특수 문자를 포함할 수 없습니다. JSON 키에 이러한 문자가 포함된 경우 출력 XML이 잘못된 형식이 됩니다. 변환 전에 문제가 있는 키 이름을 바꾸거나 후처리 단계에서 정리하세요.

✗ 오류
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem>  ← invalid XML
✓ 정상
// Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem>  ← valid XML

값의 특수 문자가 이스케이프되지 않음

XML 텍스트 내용에는 원시 <, >, &, " 문자를 포함할 수 없습니다 — <, >, &, "로 이스케이프되어야 합니다. 변환기는 요소 텍스트 내용과 속성 값에서 이러한 문자를 자동으로 이스케이프합니다. 다운스트림 처리가 이중으로 이스케이프한다면 XML 파서가 이미 이스케이프된 내용을 재이스케이프하는 것이 아닌 원시 XML 바이트를 소비하는지 확인하세요.

✗ 오류
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' &amp; role = 'admin'</query>
// If double-processed: &amp;amp; — consumer is re-escaping
✓ 정상
// Converter output is correct — consume it as XML, not as a raw string
// <query>name = 'Alice' &amp; role = 'admin'</query>
// XML parser decodes to: name = 'Alice' & role = 'admin'

주요 사용 사례

SOAP 및 레거시 XML 웹 서비스 호출
애플리케이션에서 JSON 페이로드를 빌드하고 XML로 변환한 다음 SOAP 엔드포인트에 POST하세요. 이렇게 하면 XML 문자열을 수동으로 작성하지 않아도 되며 레거시 서비스에 직렬화가 필요한 순간까지 네이티브 JSON 구조로 데이터를 처리할 수 있습니다.
XML 설정 파일 생성
Spring, Maven, Ant, Tomcat, Android는 모두 XML 설정 형식을 사용합니다. 설정 데이터를 JSON으로 생성하거나 변환하여 — diff와 버전 관리가 더 쉬움 — 배포를 위해 XML로 변환하세요.
사이트맵 및 RSS 피드 XML 생성
콘텐츠 관리 시스템과 정적 사이트 생성기는 종종 페이지 메타데이터를 JSON으로 저장합니다. 해당 메타데이터를 sitemap.xml 또는 RSS 피드 XML로 변환하여 검색 엔진에 제출하거나 피드 리더에 콘텐츠를 신디케이션하세요.
기업 데이터 통합 (EDI / ERP / CRM)
ERP 시스템(SAP, Oracle), CRM 플랫폼, EDI 네트워크는 일반적으로 XML로 데이터를 교환합니다. 현대 REST API에서 JSON 내보내기를 XML로 변환하여 사용자 정의 XML 직렬화기 없이 이러한 시스템에 공급하세요.
Android 리소스 파일
Android 문자열 리소스, 레이아웃 제약, 매니페스트 항목은 모두 XML입니다. JSON 데이터 소스에서 리소스 파일을 프로그래밍 방식으로 생성하거나 업데이트하고 Android 빌드 시스템에 필요한 XML 형식으로 변환하세요.
SVG 및 벡터 그래픽 생성
SVG는 XML입니다. JSON 데이터로 SVG 구조를 빌드하고 — 경로, 도형, 색상, 변환 — XML로 변환하여 웹, 인쇄, 벡터 편집 도구에 사용할 유효한 SVG 파일을 생성하세요.

기술 세부 정보

RFC 8259 호환 JSON 파싱
JSON 입력은 브라우저의 네이티브 JSON.parse()를 사용하여 파싱되며 RFC 8259를 완전히 준수합니다. 최선의 위치 정보(줄 및 열 번호)를 포함한 정확한 구문 오류 메시지를 제공하며 모든 JSON 데이터 타입(문자열, 숫자, 불리언, null, 배열, 객체)을 처리합니다.
사용자 정의 재귀 JSON-to-XML 직렬화기
파싱 후 사용자 정의 재귀 직렬화기가 JSON 트리를 탐색합니다. @_로 시작하는 객체 키는 부모 요소의 XML 속성으로 출력됩니다. #text 키는 요소의 텍스트 내용으로 출력됩니다. 일반 객체 키는 자식 요소가 됩니다. 배열 값은 반복되는 같은 이름의 형제 요소를 생성합니다. 텍스트 내용과 속성 값의 특수 문자(<, >, &, ", ')는 XML 엔티티 참조로 이스케이프됩니다.
루트 정규화
XML은 정확히 하나의 루트 요소를 요구하므로 직렬화기는 문서 빌드 전에 루트 정규화를 적용합니다: 단일 키 객체는 해당 키를 루트로 사용하고, 다중 키 객체와 최상위 배열은 합성 감싸기를 받습니다. 이로써 입력 형태에 관계없이 출력이 항상 올바른 형식의 XML이 됩니다.
100% 브라우저 기반 — 업로드 없음, 서버 없음
모든 처리가 브라우저의 JavaScript 엔진에서 실행됩니다. 어떤 시점에서도 네트워크를 통해 데이터가 전송되지 않습니다. 200KB보다 큰 입력은 자동으로 실시간 모드에서 수동 모드(명시적인 변환 클릭 필요)로 전환되어 무거운 직렬화 중에 브라우저 응답성을 유지합니다.

모범 사례

단일 키 객체로 루트 요소 제어
의미 있는 XML을 생성하는 가장 깔끔한 방법은 최상위 JSON이 원하는 루트 요소 이름이 키인 단일 키 객체인지 확인하는 것입니다. 다중 키 데이터를 하나의 명명된 키 아래에 감싸면 일반적인 감싸기 대신 의미론적으로 의미 있는 루트가 생성됩니다.
속성이 많은 XML에는 @_와 #text 사용
대상 XML 스키마가 많은 속성을 사용한다면(설정 파일, SVG, SOAP 엔벨로프에서 일반적), 변환 전에 @_ 접두사가 붙은 키와 #text를 사용하도록 JSON을 재구성하세요. 결과 XML이 후처리 없이 대상 스키마와 정확히 일치하게 됩니다.
의미 있는 태그 이름을 위해 배열을 명명된 객체로 감싸기
최상위 배열은 이 고정 리터럴 이름인 일반적인 ... 패턴을 생성합니다. 배열을 명명된 키 아래에 감싸면 — { "products": [...] } — 반복되는 요소(키 이름이 모든 배열 요소에 재사용됨)가 감싸기 아래에 생성됩니다. 이로써 도메인에 의미 있는 태그 이름이 생성되며 스키마로 파싱되거나 유효성 검사될 XML에는 거의 항상 더 나은 선택입니다.
XML 포맷터로 출력 유효성 검사
변환 후 XML 출력을 XML 포맷터에 붙여넣어 형식 일치성을 유효성 검사하고, 들여쓰기를 확인하고, 다운스트림 서비스에 XML을 전송하거나 버전 관리에 커밋하기 전에 구조적 문제를 식별하세요.
변환 전 JSON 키 정리
XML 요소 이름은 문자 또는 밑줄로 시작해야 하며 공백이나 대부분의 특수 문자를 포함할 수 없습니다. JSON 키가 외부 소스(데이터베이스 열 이름, API 필드 이름, 사용자 입력)에서 온 경우 잘못된 형식의 출력을 방지하기 위해 변환 전에 XML 이름 유효성을 감사하세요.

자주 묻는 질문

이 도구 사용 시 JSON 데이터가 서버로 전송되나요?
아니요. 모든 변환은 JavaScript를 사용하여 브라우저에서 완전히 처리됩니다. JSON은 네트워크를 통해 전송되지 않고, 어떤 서버에도 저장되지 않으며, 기록되거나 분석되지 않습니다. 따라서 API 자격 증명, 데이터베이스 설정, 내부 서비스 데이터 등 민감한 내용을 포함하는 JSON 페이로드에도 안전하게 사용할 수 있습니다. 브라우저의 네트워크 탭을 열어 확인할 수 있습니다 — JSON을 붙여넣거나 변환해도 아무 요청도 발생하지 않습니다.
도구는 XML 루트 요소를 어떻게 결정하나요?
XML은 정확히 하나의 루트 요소를 요구하지만 JSON에는 그런 제약이 없습니다. 변환기는 다음 규칙을 적용합니다: (1) 단일 키 객체는 해당 키를 루트 요소 이름으로 사용합니다 — { "user": { ... } }는 ...가 됩니다. (2) 다중 키 객체(최상위 레벨에 두 개 이상의 키)는 모든 키가 단일 루트의 자식이 되도록 요소로 감싸집니다. (3) 최상위 배열은 ...로 감싸지며 각 배열 요소가 자식이 됩니다. (4) 최상위 레벨의 기본 값(문자열, 숫자, 불리언, null)은 이 됩니다. 이 규칙들은 출력이 항상 정확히 하나의 루트를 가진 올바른 형식의 XML이 되도록 보장합니다.
다중 키 JSON 객체가 로 감싸지는 이유는 무엇인가요?
XML은 유효한 XML 문서가 정확히 하나의 최상위 요소를 가져야 하는 엄격한 단일 루트 요구 사항을 가진 문서 형식입니다. JSON 객체는 원하는 수의 최상위 키를 가질 수 있으므로, JSON에 여러 최상위 키(예: { "status": 200, "data": {...}, "meta": {...} })가 있을 때 루트로 사용할 단일 키가 없습니다. 로 감싸는 것이 가장 안전하고 예측 가능한 관례입니다. 다른 루트 요소 이름을 원한다면 변환 전에 JSON을 단일 키 객체로 재구성하세요 — 예: { "response": { "status": 200, "data": {...} } }.
최상위 JSON 배열은 XML로 어떻게 변환되나요?
최상위 배열은 ......로 감싸집니다. 각 배열 요소는 자식이 됩니다 — "item"은 최상위 배열에만 사용되는 고정 리터럴 이름입니다. 이는 객체 키 아래에 중첩된 배열과 구별됩니다: { "products": [...] }를 작성하면 각 배열 요소가 이 아닌 자식이 됩니다(키 이름을 재사용). 최상위 배열에 사용자 정의 태그 이름을 원한다면 먼저 명명된 객체로 감싸세요: { "products": [...] }는 반복되는 요소를 생성합니다.
JSON 키를 XML 속성으로 변환하려면 어떻게 하나요?
키에 @_ 접두사를 붙이면 변환기가 자식 요소 대신 XML 속성으로 출력합니다. 예를 들어 { "tag": { "@_id": "42", "@_lang": "en", "#text": "Hello" } }는 Hello를 생성합니다. @_ 접두사 관례는 fast-xml-parser(Node.js)와 xmltodict(Python)에서 사용하는 것과 동일하여 출력이 해당 라이브러리와 일관되게 왕복 변환됩니다. 이는 동반 도구인 XML to JSON 변환기에서도 사용하는 관례입니다.
#text 키는 무엇에 사용되나요?
요소에 XML 속성과 텍스트 내용이 모두 필요할 때 텍스트를 자식 요소에 매핑할 수 없습니다 — 요소 자체의 텍스트 노드여야 합니다. JSON의 #text 키가 그 텍스트 내용이 됩니다. 예: { "price": { "@_currency": "USD", "#text": "29.99" } }는 29.99를 생성합니다. @_ 키가 없고 #text 키만 있는 객체도 일반 텍스트 요소를 생성합니다: { "note": { "#text": "hello" } }는 hello가 됩니다.
들여쓰기가 XML 구조에 영향을 미치나요?
아니요. 들여쓰기는 순전히 시각적입니다 — XML이 사람이 읽을 수 있도록 포맷되는 방식을 변경하지만 요소 구조, 속성 값, 텍스트 내용에는 영향을 미치지 않습니다. 압축된 출력에는 2칸, 더 읽기 쉬운 출력에는 4칸을 선택하세요. 두 가지 모두 의미적으로 동일한 XML을 생성합니다. 대부분의 XML 파서는 요소 사이의 공백만 포함하는 텍스트 노드를 무시할 수 있는 공백으로 처리하므로 들여쓰기된 XML과 최소화된 XML은 파싱 목적으로 동일합니다.
객체 내부에 중첩된 JSON 배열은 XML로 어떻게 변환되나요?
키 아래의 JSON 배열 값은 키 이름을 모든 요소에 재사용하여 반복되는 같은 이름의 자식 요소를 생성합니다. 예를 들어 { "items": [1, 2, 3] }는 세 개의 형제를 생성합니다 — 이 아닙니다. 마찬가지로 { "products": [{"name":"A"},{"name":"B"}] }는 각각 자식을 포함하는 두 개의 요소를 생성합니다. 키 이름은 모든 배열 요소에 그대로 사용됩니다; 단수화가 발생하지 않습니다. 리터럴 이름 이 나타나는 유일한 경우는 전체 JSON 입력이 최상위 배열일 때입니다(위 참조). 여기서 은 해당 경우에만 사용되는 고정 대체 이름입니다.
XML을 다시 JSON으로 변환하려면 어떻게 하나요?
동반 도구인 XML to JSON 변환기를 사용하세요. 역방향으로 같은 @_와 #text 관례를 적용합니다: XML 속성은 @_ 접두사가 붙은 JSON 키가 되고, 속성과 쌍을 이루는 요소 텍스트 내용은 #text 키가 되며, 반복되는 같은 이름의 형제 요소는 JSON 배열이 됩니다. 두 도구는 왕복 변환 사용 사례에서 대칭적으로 동작합니다.
XML 출력을 유효성 검사하거나 포맷할 수 있나요?
네 — XML 출력을 XML 포맷터에 붙여넣어 형식 일치성을 유효성 검사하거나 들여쓰기를 조정하거나 최소화하세요. XML 포맷터는 이 변환기가 XML을 생성한 후 검사하고 다듬기 위한 올바른 도구입니다.
JSON 입력에 파일 크기 제한이 있나요?
엄격한 제한은 없지만, 200KB를 초과하는 입력은 자동으로 실시간 변환에서 수동 모드로 전환됩니다. 수동 모드에서는 변환 버튼이 나타나며 클릭할 때만 변환이 실행됩니다 — 이렇게 하면 무거운 직렬화 중에 브라우저 응답성을 유지합니다. 매우 큰 JSON 파일(수 메가바이트)의 경우 더 나은 성능을 위해 명령줄 도구를 고려하세요: node -e "const {XMLBuilder}=require('fast-xml-parser');console.log(new XMLBuilder({attributeNamePrefix:'@_'}).build(JSON.parse(require('fs').readFileSync('in.json','utf8'))))" 또는 xmltodict를 사용한 동등한 Python 스크립트.
어떤 JSON 타입이 지원되나요?
모든 여섯 가지 JSON 타입이 지원됩니다. 객체는 자식 요소가 있는 XML 요소가 됩니다. 배열은 반복되는 같은 이름의 형제 요소가 됩니다. 문자열, 숫자, 불리언, null은 요소의 텍스트 내용이 됩니다. 불리언과 null은 리터럴 문자열 표현으로 직렬화됩니다: true, false, null의 경우 빈 내용. 타입 강제 변환이 적용되지 않습니다 — 숫자는 JSON에 표시된 그대로 XML 텍스트 내용에 작성되어 소수점과 정밀도가 보존됩니다.