ToolDeck

JSON to XML 변환기

JSON을 XML 형식으로 변환

예시 시도

JSON 입력

XML 출력

로컬에서 실행 · 시크릿 붙여넣기 안전
XML이 여기에 표시됩니다…

JSON to XML 변환이란?

JSON(JavaScript Object Notation)과 XML(eXtensible Markup Language)은 소프트웨어 개발에서 가장 널리 쓰이는 두 가지 데이터 교환 형식입니다. JSON은 키-값 쌍과 배열을 간결한 문법으로 표현하며, XML은 선택적 속성을 가진 여는 태그와 닫는 태그로 데이터를 감쌉니다. JSON을 XML로 변환한다는 것은 JSON의 구조적 기본 요소인 객체, 배열, 문자열, 숫자, 불리언, null을 중첩된 요소 구조를 갖춘 올바른 형식의 XML 문서로 변환하는 것을 의미합니다.

XML은 많은 엔터프라이즈 시스템, 정부 API, SOAP 웹 서비스, 그리고 HL7(의료), FpML(금융), XBRL(재무 보고)과 같은 산업 표준에서 필수 형식으로 남아 있습니다. 애플리케이션이 JSON을 생성하지만 하위 시스템이 XML을 요구하는 경우, JSON to XML 변환기가 수동 재구성 없이 변환을 처리합니다. 변환은 예측 가능한 매핑 규칙을 따릅니다. JSON 객체는 XML 요소가 되고, 배열 항목은 반복되는 형제 요소가 되며, 기본 값은 텍스트 노드가 됩니다.

JSON이 XML에 어떻게 매핑되는지를 정의하는 단일 RFC나 W3C 표준은 존재하지 않습니다. 라이브러리마다 동일한 입력에 대해 서로 다른 출력을 생성합니다. 가장 일반적인 관례(이 도구가 사용하는 방식)는 전체 문서를 설정 가능한 루트 요소로 감싸고, 각 JSON 키를 XML 자식 요소로 변환하며, 배열 항목을 동일한 태그 이름의 반복 요소로 표현합니다. 수신 시스템이 특정 XML 스키마(XSD)를 강제하는 경우 이 매핑 규칙을 이해하는 것이 중요합니다.

온라인 JSON to XML 변환기를 사용하는 이유

JSON 소스를 바탕으로 XML을 직접 작성하는 것은 번거롭고 오류가 발생하기 쉽습니다. 태그 불일치, 닫는 요소 누락, 잘못된 중첩은 스키마 검증에 실패하는 문서를 만들어냅니다. 변환기는 구조적 변환을 자동으로 처리합니다.

브라우저에서 즉시 변환
JSON을 붙여넣으면 밀리초 단위로 올바른 형식의 XML을 얻습니다. 서버 왕복, CLI 설정, 의존성 설치가 필요 없습니다. 변환은 기기의 JavaScript에서 완전히 실행됩니다.
🔒
민감한 데이터 보호
JSON 입력이 브라우저 탭 밖으로 나가지 않습니다. 파싱과 XML 생성이 모두 클라이언트 측에서 이루어지므로 API 키, 토큰, 운영 데이터가 포함된 페이로드도 안전하게 변환할 수 있습니다.
📋
계정 또는 로그인 불필요
페이지를 열고, JSON을 붙여넣고, XML 출력을 복사하세요. 회원가입 양식, 이메일 인증, 사용량 제한 없이 바로 변환된 데이터를 얻을 수 있습니다.
🌳
중첩 구조 자동 처리
깊게 중첩된 객체, 혼합 배열, null 값도 모두 올바르게 변환됩니다. 이 도구는 JSON 입력의 전체 계층 구조를 결과 XML 트리에 그대로 보존합니다.

JSON to XML 활용 사례

SOAP 웹 서비스 연동
REST API가 JSON을 반환하지만 파트너의 SOAP 엔드포인트가 XML 요청 본문을 요구하는 경우, JSON 페이로드를 XML로 변환한 뒤 SOAP 봉투로 감쌉니다.
엔터프라이즈 데이터 교환
레거시 ERP 및 CRM 시스템은 XML 임포트만 허용하는 경우가 많습니다. 최신 도구의 JSON 내보내기를 예상 스키마에 맞는 XML 피드로 변환합니다.
CI/CD 파이프라인 설정
일부 빌드 도구(Maven, Ant, MSBuild)는 XML 설정 파일을 사용합니다. 자동화 빌드 중에 JSON 파라미터 파일로부터 XML 설정 조각을 생성합니다.
QA 테스트 데이터 준비
JSON 데이터셋으로부터 XML 테스트 픽스처를 생성합니다. XML 파서, XSLT 변환, XPath 쿼리를 테스트하기 위한 올바른 형식의 XML 문서를 빠르게 만들 수 있습니다.
데이터 파이프라인 형식 연결
XML을 처리하는 ETL 파이프라인은 JSON을 생성하는 API로부터 데이터를 받을 수 있습니다. 중간 JSON 결과를 XML 기반 처리 단계에 로드하기 전에 XML로 변환합니다.
XML 구조 학습
XML을 학습하는 개발자가 익숙한 JSON 구조를 붙여넣어 동등한 XML 표현을 확인할 수 있습니다. 태그 중첩, 요소 계층, 문서 구조를 구체적으로 이해할 수 있습니다.

JSON to XML 매핑 규칙

JSON-to-XML 변환을 지배하는 범용 표준이 없기 때문에 도구마다 다른 출력을 생성합니다. 아래 표는 이 변환기와 대부분의 인기 라이브러리(js2xmlparser, xmlbuilder, fast-xml-parser)가 사용하는 매핑 관례를 보여줍니다. 배열에 대해 반복 형제 요소를 사용하는 관례가 주류가 된 이유는 XML 스키마가 컬렉션을 자연스럽게 모델링하는 방식을 반영하기 때문입니다. 각 항목이 래핑된 자식이 아닌 독립적인 요소가 되며, XPath 쿼리와 XSLT 변환과도 깔끔하게 통합됩니다.

JSON TypeJSON ExampleXML Output
Object{"name": "Alice"}<name>Alice</name>
Nested object{"user": {"age": 30}}<user><age>30</age></user>
Array{"colors": ["red", "blue"]}<colors>red</colors><colors>blue</colors>
String"hello"<root>hello</root>
Number42<root>42</root>
Booleantrue<root>true</root>
Nullnull<root/>
Empty object{}<root/>
Empty array[](no child elements)

코드 예제

아래는 세 가지 환경에서 JSON을 XML로 변환하는 실행 가능한 코드 조각입니다. 각 예제는 샘플 JSON 객체로부터 올바른 형식의 XML을 생성합니다.

JavaScript (Node.js)
import { create } from 'xmlbuilder2';

const json = {
  order: {
    id: 1024,
    items: [
      { sku: "A1", qty: 2 },
      { sku: "B3", qty: 1 }
    ],
    shipped: false
  }
};

const xml = create({ version: '1.0' })
  .ele(json)
  .end({ prettyPrint: true });

console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// →   <id>1024</id>
// →   <items>
// →     <sku>A1</sku>
// →     <qty>2</qty>
// →   </items>
// →   <items>
// →     <sku>B3</sku>
// →     <qty>1</qty>
// →   </items>
// →   <shipped>false</shipped>
// → </order>
Python
import json
import xmltodict

data = {
    "order": {
        "id": 1024,
        "items": [
            {"sku": "A1", "qty": 2},
            {"sku": "B3", "qty": 1}
        ],
        "shipped": False
    }
}

# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# →   <id>1024</id>
# →   <items>
# →     <sku>A1</sku>
# →     <qty>2</qty>
# →   </items>
# →   <items>
# →     <sku>B3</sku>
# →     <qty>1</qty>
# →   </items>
# →   <shipped>false</shipped>
# → </order>
Go
package main

import (
	"encoding/json"
	"encoding/xml"
	"fmt"
)

type Item struct {
	SKU string `json:"sku" xml:"sku"`
	Qty int    `json:"qty" xml:"qty"`
}

type Order struct {
	XMLName xml.Name `xml:"order"`
	ID      int      `json:"id" xml:"id"`
	Items   []Item   `json:"items" xml:"items"`
	Shipped bool     `json:"shipped" xml:"shipped"`
}

func main() {
	raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`

	var order Order
	json.Unmarshal([]byte(raw), &order)

	out, _ := xml.MarshalIndent(order, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <order>
	// →   <id>1024</id>
	// →   <items>
	// →     <sku>A1</sku>
	// →     <qty>2</qty>
	// →   </items>
	// →   ...
}

자주 묻는 질문

JSON to XML 변환은 손실 없이 이루어지나요?
구조적으로는 그렇습니다. 모든 JSON 값은 XML 요소 또는 텍스트 노드에 매핑됩니다. 그러나 XML은 JSON처럼 숫자, 불리언, 문자열을 기본적으로 구별하지 않습니다. JSON의 숫자 42는 XML에서 텍스트 콘텐츠 "42"가 됩니다. 수신 시스템이 XML 스키마(XSD) 타입 선언에 의존한다면 파싱 중에 원래 타입을 복원할 수 있습니다. 스키마 없이는 타입 정보가 변환된 문서에서 사실상 손실됩니다.
JSON 배열은 어떻게 XML로 변환되나요?
각 배열 항목은 동일한 태그 이름을 가진 형제 XML 요소가 됩니다. 예를 들어 JSON 배열 "colors": ["red", "blue"]는 두 개의 요소를 생성합니다: &lt;colors&gt;red&lt;/colors&gt;와 &lt;colors&gt;blue&lt;/colors&gt;. 일부 변환기는 배열을 부모 요소(예: &lt;colorsList&gt;)로 감싸지만, 반복 형제 방식이 더 일반적이며 JAXB, Jackson, fast-xml-parser에서 사용하는 관례와 일치합니다.
변환 시 null 값은 어떻게 처리되나요?
JSON의 null은 일반적으로 빈 XML 요소로 변환됩니다. 예를 들어 "middle_name": null은 &lt;middle_name/&gt;이 됩니다. 일부 라이브러리는 명시적 null을 나타내기 위해 xsi:nil="true" 속성을 추가하는데, 이는 대상 시스템이 XSD 스키마에 대해 검증할 때 유용합니다. 이 변환기는 기본적으로 자기 닫는 빈 요소를 출력합니다.
XML을 다시 JSON으로 변환할 수 있나요?
가능하지만 왕복 변환이 항상 대칭적인 것은 아닙니다. 속성, 처리 지시문, 주석, 혼합 콘텐츠, 네임스페이스 같은 XML 기능은 JSON에 직접적인 대응 요소가 없습니다. XML을 JSON으로 변환했다가 다시 XML로 변환하면 구조적으로 다른 문서가 생성될 수 있습니다. XML to JSON 변환이 필요하다면 속성과 네임스페이스를 보존하는 전용 XML to JSON 변환기를 사용하세요.
유효한 XML 요소 이름이 아닌 JSON 키는 어떻게 처리하나요?
XML 요소 이름은 숫자로 시작하거나 공백을 포함하거나 대부분의 특수 문자를 포함할 수 없습니다. JSON 키가 "2024-data" 또는 "first name"과 같은 경우, 변환기는 해당 키를 정리해야 합니다. 일반적으로 밑줄을 접두사로 붙이거나 유효하지 않은 문자를 밑줄로 교체합니다. 변환기 출력을 확인하고, 결과 XML이 XSD 검증을 통과해야 한다면 소스 JSON의 키 이름을 조정하세요.
이 도구가 처리할 수 있는 최대 JSON 크기는?
변환기는 브라우저의 JavaScript 엔진에서 실행되므로 실질적인 한도는 사용 가능한 메모리에 따라 다릅니다. 대부분의 최신 브라우저는 50~100MB의 JSON 문서를 문제없이 처리합니다. 그보다 큰 파일의 경우 Python의 xmltodict처럼 데이터를 모두 메모리에 로드하는 대신 점진적으로 처리하는 스트리밍 변환기나 커맨드라인 도구를 사용하세요.
출력 XML은 올바른 형식(well-formed)인가요, 유효한(valid) XML인가요?
출력은 항상 올바른 형식의 XML입니다. 태그가 올바르게 중첩되고, 특수 문자가 이스케이프되며, 문서에 단일 루트 요소가 있습니다. 출력이 유효한지 여부는 대상 스키마(XSD 또는 DTD)에 따라 달라집니다. 올바른 형식은 구조적 보장이며, 유효성은 요소 이름, 중첩 순서, 콘텐츠 타입이 특정 스키마 정의와 일치해야 합니다.