개발 도구

JSON·XML 변환

양방향 변환. 속성 표시, 항상 배열로 만들 요소, 숫자 변환까지 정할 수 있습니다.

🔒 입력한 내용과 파일은 이 브라우저 안에서만 처리합니다. 서버로 보내지 않습니다.

예시
공통
JSON → XML
XML → JSON

    JSON·XML 변환 사용법

    JSON과 XML을 서로 바꾸는 도구입니다. 공공데이터나 오래된 시스템이 XML로 주는 응답을 자바스크립트나 파이썬에서 다루기 쉽게 JSON으로 바꿀 때, 반대로 XML만 받는 시스템에 보낼 자료를 JSON에서 만들 때 씁니다. 두 형식은 구조가 달라서 기계적으로 일대일 대응이 되지 않는 부분이 있는데, 그 부분을 어떻게 처리할지 옵션으로 정할 수 있게 했습니다.

    쓰는 순서

    1. 입력 칸에 JSON이나 XML을 붙여 넣습니다. 첫 글자가 < 이면 XML, 아니면 JSON으로 보고 바로 반대 형식으로 바꿉니다.
    2. 방향을 직접 정하려면 JSON → XML 또는 XML → JSON을 누릅니다.
    3. 옵션을 바꾸면 결과가 바로 다시 만들어집니다.
    4. 결과 복사나 파일로 저장으로 가져갑니다. 결과를 입력 칸으로를 누르면 결과를 다시 반대로 바꿔 원래 모양으로 돌아오는지 확인할 수 있습니다.

    예시

    {"상품": {"@코드": "K-01", "이름": "무선 키보드", "색상": ["검정", "흰색"]}} 을 넣으면 다음 XML이 나옵니다.

    결과
    <?xml version="1.0" encoding="UTF-8"?>
    <상품 코드="K-01">
      <이름>무선 키보드</이름>
      <색상>검정</색상>
      <색상>흰색</색상>
    </상품>

    맨 바깥 키가 하나뿐이어서 그 키가 뿌리 요소가 됐고, @코드 는 속성이, 배열 색상 은 같은 이름의 요소 두 개가 됐습니다. 이 결과를 다시 XML → JSON으로 바꾸면 처음의 JSON과 같은 내용이 나옵니다.

    두 형식이 어긋나는 곳과 처리 방법

    상황이 도구의 처리
    XML 속성이름 앞에 속성 표시(기본 @)를 붙인 키로 담습니다. JSON → XML에서는 이 표시로 시작하는 키가 속성이 됩니다.
    속성과 글자가 함께 있는 요소글자를 글자 키(기본 #text)에 담습니다. <연락처 종류="휴대전화">010…</연락처> 는 {"@종류": "휴대전화", "#text": "010…"} 이 됩니다.
    같은 이름의 요소 반복배열로 묶습니다. 한 번만 나오면 배열이 아닌 값 하나가 됩니다. 항상 배열로 만들 요소에 이름을 적으면 한 번만 나와도 배열로 만듭니다. 쉼표로 여러 개를 적을 수 있습니다.
    JSON 배열키 이름을 요소 이름으로 되풀이합니다. 맨 바깥이 배열이거나 배열 안에 배열이 있어 이름이 없을 때는 이름 없는 배열 항목(기본 item)을 씁니다.
    맨 바깥 키가 여러 개인 JSONXML은 뿌리 요소가 하나여야 하므로 뿌리 요소 이름(기본 root)으로 전체를 감쌉니다.
    null과 빈 문자열둘 다 <이름/> 같은 빈 요소가 됩니다. 빈 요소는 JSON에서 null이 됩니다.
    자료형XML → JSON에서 값은 모두 문자열입니다. 숫자와 true·false 를 값으로를 켜면 숫자 모양인 것만 숫자로 바꿉니다.
    글자 속의 & < >XML로 갈 때 &amp; &lt; &gt; 로 바꾸고, JSON으로 올 때 원래 글자로 되돌립니다. CDATA 안의 글도 그대로 꺼냅니다.

    숫자 변환을 켤 때 주의할 값

    숫자와 true·false 를 값으로는 120, -3.5 처럼 숫자 규칙에 정확히 맞는 글자만 바꿉니다. 010-0000-0000 처럼 기호가 섞인 값, 04524 처럼 0으로 시작하는 값, 2.0 처럼 숫자로 바꾸면 모양이 달라지는 값, 16자리 이상의 긴 숫자는 문자열로 둡니다. 우편번호의 앞자리 0, 버전 번호의 소수점, 긴 식별자의 끝자리가 사라지지 않게 하기 위해서입니다. 그래도 상품 코드 1024 처럼 뜻은 글자인데 모양이 숫자인 값은 숫자가 되니, 받는 쪽 코드가 문자열을 기대한다면 끄고 쓰세요.

    요소 이름 규칙

    XML 요소와 속성의 이름은 글자나 밑줄로 시작해야 하고 공백, 괄호, 슬래시 같은 기호를 쓸 수 없습니다. xml 로 시작하는 이름도 예약되어 있습니다. JSON 키가 이 규칙에 맞지 않으면 쓸 수 없는 글자를 밑줄로 바꾸고 필요하면 앞에 밑줄을 붙입니다. 예를 들어 키 1st place 는 요소 _1st_place 가 됩니다. 바꾼 내용은 "바꾸면서 고친 곳"에 나옵니다. 한글 이름은 XML에서도 쓸 수 있어 그대로 둡니다.

    왕복해도 같아지지 않는 경우

    • XML의 주석, 처리 지시문, DOCTYPE은 JSON으로 옮기지 않습니다.
    • 글자와 자식 요소가 섞인 내용(<p>가 <b>나</b> 다</p>)은 글자를 한데 모아 글자 키에 담기 때문에 원래 순서를 잃습니다.
    • 이름이 다른 형제 요소가 번갈아 나오면(a, b, a) 같은 이름끼리 배열로 묶여 순서가 a, a, b 가 됩니다.
    • JSON의 숫자·불리언·문자열 구분, null과 빈 문자열의 구분은 XML을 거치면 사라집니다.

    파일 여러 개를 한 번에

    파일을 두 개 이상 고르면 파일마다 내용을 보고 방향을 정해 바꾼 뒤 ZIP으로 저장합니다. JSON 파일은 xml로, XML 파일은 json으로 확장자가 바뀝니다. 읽지 못한 파일은 목록에 줄 번호와 이유가 나옵니다.

    자주 묻는 질문

    XML의 속성은 JSON에서 어떻게 되나요?

    속성은 이름 앞에 @를 붙인 키가 됩니다. <상품 코드="K-01">은 "@코드": "K-01"이 됩니다. 속성과 글자가 함께 있는 요소의 글자는 #text 키에 담습니다. 두 표시는 옵션에서 다른 글자로 바꿀 수 있고, 속성이 필요 없으면 속성 버리기를 켜면 됩니다.

    항목이 하나일 때는 객체, 여러 개일 때는 배열로 나와서 코드가 깨집니다.

    XML에는 배열이라는 개념이 없어서 같은 이름의 요소가 두 번 이상 나와야 배열로 볼 수 있기 때문입니다. 항상 배열로 만들 요소 칸에 item처럼 요소 이름을 적어 두면 하나뿐이어도 배열로 만들어 결과의 모양이 일정해집니다.

    JSON을 XML로 바꾸면 숫자와 문자열 구분이 사라지나요?

    사라집니다. XML의 내용은 모두 글자여서 45000과 "45000"이 똑같이 적힙니다. 다시 JSON으로 바꿀 때 숫자와 true·false를 값으로 옵션을 켜면 숫자 모양의 글자를 숫자로 되돌리지만, 원래 문자열이던 숫자까지 숫자가 됩니다.

    키에 공백이나 숫자로 시작하는 이름이 있으면 어떻게 되나요?

    XML 요소 이름에는 공백을 쓸 수 없고 숫자로 시작할 수도 없습니다. 이런 키는 쓸 수 없는 글자를 밑줄로 바꾸고 앞에 밑줄을 붙여 요소 이름으로 만들며, 무엇을 어떻게 바꿨는지 결과 위에 알려 줍니다. 한글 키는 그대로 쓸 수 있습니다.

    공공데이터 API의 XML 응답을 JSON으로 바꿀 수 있나요?

    바꿀 수 있습니다. 응답 XML을 붙여 넣고 XML → JSON을 누르면 됩니다. 목록이 item 요소로 오는 경우가 많으니 항상 배열로 만들 요소에 item을 적어 두면 결과가 한 건일 때도 같은 코드로 처리할 수 있습니다.

    함께 쓰면 좋은 도구

    마지막 수정 2026-11-09. 있었으면 하는 기능이나 불편한 점은 이 도구에 건의하기로 알려 주세요.