JSON → XML 변환기
왼쪽에 JSON을 붙여넣으면 오른쪽에 잘 형성된 XML이 만들어져요. @_ 로 시작하는 키는 속성이 됩니다. 모든 처리는 브라우저 안에서 진행되며 업로드가 없어요.
- 왼쪽 텍스트 영역에 JSON을 붙여넣어 주세요.
- "XML로 변환" 버튼을 누르면 JSON 키는 요소가 되고, @_ 키는 속성이 됩니다.
- 결과를 복사하거나 파일로 다운로드할 수 있어요.
- 데이터를 단일 루트 키로 감싸 주세요 — XML은 최상위 요소가 하나여야 합니다.
어떤 도구인가요?
fast-xml-parser의 XMLBuilder 규약을 따라 JSON을 XML로 변환합니다. 객체 속성은 자식 요소가 되고, `@_` 접두사가 붙은 속성은 부모 요소의 XML 속성이 되며, 배열은 같은 태그 이름의 형제 요소들로 표현됩니다. 숫자, 부울, 문자열은 텍스트 콘텐츠로 출력되고, 결과는 가독성을 위해 들여쓰기됩니다.
예시
JSON 입력:
{
"root": {
"@_version": 1,
"name": "Ada",
"tags": ["math", "logic"]
}
} XML 출력:
<root version="1">
<name>Ada</name>
<tags>math</tags>
<tags>logic</tags>
</root> 자주 만나는 JSON → XML 함정
XML은 JSON보다 구조가 엄격해요. 결과가 예상과 다를 때 살펴봐야 할 패턴들입니다.
- 단일 루트가 없음. XML은 정확히 하나의 루트 요소가 필요해요. 최상위에 키가 여러 개인 JSON은 여러 루트를 만들어 잘못된 XML이 됩니다. 단일 키로 감싸세요: `{"root": {"a":1, "b":2}}`.
- 최상위 배열. JSON 배열 `[{"a":1},{"a":2}]` 은 사용할 루트 요소 이름이 없어요. 감싸세요: `{"items": [{"a":1},{"a":2}]}`. 각 배열 항목이 `<items>` 요소가 됩니다.
- 요소 이름에 공백이나 특수 문자. XML 요소 이름은 공백, 숫자로 시작, `:`, `/`, `<` 같은 문자를 포함할 수 없어요. 변환 전에 JSON 키를 정리하세요 — 공백은 `_` 로, 숫자로 시작하는 이름은 문자 접두사를 추가합니다.
- 속성 vs 요소. 키 `id` 는 자식 요소 `<id>1</id>` 가 돼요. 속성으로 만들고 싶으면(`<user id="1">`) 키 앞에 `@_` 를 붙이세요: `{"user":{"@_id":1}}`. 출력 시 접두사는 자동으로 제거됩니다.
- null 값. JSON `null` 은 빈 요소(`<x/>`)가 돼요. 완전히 생략하고 싶다면 변환 전에 null 값을 제거하세요.
- 텍스트의 특수 문자. XML은 `<`, `>`, `&`, `"`, `\'` 를 자동으로 이스케이프해요. JSON 문자열 `"<b>hi</b>"` 는 중첩 요소가 아니라 텍스트 `<b>hi</b>` 가 됩니다. 실제 중첩이 필요하면 JSON 구조 자체로 표현하세요.
자주 묻는 질문
XML 선언 `<?xml version="1.0"?>` 은 어떻게 추가하나요?
필요하면 결과 앞에 직접 추가하세요. 변환기는 선언을 출력하지 않아요. UTF-8 XML이라면 `<?xml version="1.0" encoding="UTF-8"?>` 를 변환된 XML 앞에 붙이는 게 일반적입니다.
JSON 배열은 반복 요소로 보존되나요?
네. `{"tags":["a","b"]}` 는 `<tags>a</tags><tags>b</tags>` — 같은 태그 이름의 두 형제로 표현되며, 이는 반복 값에 대한 XML의 표준 표현입니다.
JSON 스타일의 중첩 배열을 XML에서 구현할 수 있나요?
직접적으로는 안 돼요. XML에는 네이티브 배열 개념이 없고 반복되는 형제만 있습니다. JSON의 중첩 배열은 더 평면적인 XML 구조가 되며, 그룹화는 컨텍스트에 의존해요. XML → JSON → XML 왕복은 왕복 가능한 부분 집합만 보존합니다.
날짜는 어떻게 처리되나요?
JSON에는 Date 타입이 없으므로 보통 ISO 8601 문자열이에요. 그 값이 그대로 요소 텍스트로 들어갑니다. XML 다운스트림이 특정 형식을 기대하면 JSON 단계에서 그 형식으로 맞춰 두세요.
JSON이 어디론가 업로드되나요?
아니요. 모든 처리는 브라우저 안에서 진행돼요. 변환 버튼을 눌러도 어떤 서버에도 데이터가 전송되지 않습니다.
JSON → XML → JSON 왕복 변환이 데이터를 보존하나요?
@_ 속성 규약을 사용하는 일반적인 구조라면 의미 단위로는 보존돼요. 일부 예외(혼합된 텍스트와 자식 요소, 속성 순서와 요소 순서 차이 등)는 정규화될 수 있어요. 바이트 단위 일치가 중요하면 XML을 거치지 않는 편이 안전합니다.