UtilityNest

XML JSON 변환

공공데이터 API 응답, RSS, 사이트맵, SOAP 같은 XML을 깔끔한 JSON으로 바꾸세요. 속성, 텍스트, 반복되는 요소를 어떻게 바꿀지 직접 정할 수 있고, 잘못된 XML은 줄과 칸 위치로 짚어 줍니다.

View in English
  • 파일이 내 기기 밖으로 나가지 않아요
  • 회원가입 없음
  • 무료, 제한 없음

앞자리 0은 문자열로 둡니다.

soap:Body가 Body가 됩니다.

XML JSON 변환 사용 방법

  1. 1XML을 입력 상자에 붙여넣거나 .xml 파일을 열거나 끌어다 놓으세요.
  2. 2속성 처리 방식을 고르세요: 접두사 붙이기(기본 @), @attributes로 묶기, 무시.
  3. 3배열 규칙(반복되는 요소만, 항상)과 자식 요소 옆 텍스트에 쓸 키를 정하세요.
  4. 4필요하면 숫자·true/false 변환, 네임스페이스 접두사 제거, 텍스트 앞뒤 공백 제거를 켜세요.
  5. 5JSON을 복사하거나 다운로드하세요. XML에 오류가 있으면 알려 준 줄을 고치면 바로 JSON이 나옵니다.

XML이 JSON으로 바뀌는 규칙

XML에는 JSON에 없는 개념이 있어서 변환할 때 정해야 할 것이 있습니다. 여기서는 그 선택을 직접 할 수 있습니다.

  • 속성: <price currency="KRW">는 {"@currency": "KRW"}가 됩니다. 접두사를 _나 -로 바꾸거나 비울 수 있고, @attributes 아래에 모으거나 아예 뺄 수도 있습니다.
  • 텍스트: 텍스트만 있는 요소는 값 하나가 됩니다. 속성이나 자식 요소와 텍스트가 함께 있으면 텍스트는 #text(또는 원하는 키) 아래에 들어갑니다.
  • 배열: 기본으로는 같은 이름이 반복되는 요소만 배열이 됩니다. 공공데이터 API처럼 결과가 1건일 때와 여러 건일 때 모양이 달라지면 곤란하다면 '항상'을 고르세요.
  • 형식: 숫자와 true/false를 바꿀 수 있고, 0으로 시작하는 값은 문자열로 둡니다.
  • 네임스페이스: soap:Body를 Body로 바꾸고 xmlns 선언은 뺄 수 있습니다.

CDATA는 텍스트로 남기고, &#44032; 같은 문자 참조는 원래 글자로 바꾸며, 주석과 처리 명령은 건너뜁니다.

어디가 틀렸는지 정확히 알려 줍니다

막연한 '파싱 오류' 대신 몇 번째 줄 몇 번째 칸인지와 이유를 알려 줍니다. 12번째 줄에서 연 태그와 닫는 태그가 맞지 않는 경우, 속성 값에 따옴표가 없는 경우, &amp;로 써야 할 & 기호, XML에서 쓸 수 없는 &nbsp; 같은 HTML 엔티티, 닫히지 않은 태그, 최상위 요소가 두 개인 경우 등을 구분합니다. 문제가 된 줄을 표시와 함께 보여 주고, '입력창에서 위치 보기'를 누르면 그 위치로 이동합니다. 브라우저 내장 파서가 아니라 페이지에 들어 있는 파서를 쓰므로 크롬, 사파리, 엣지 어디서나 같은 결과가 나옵니다.

결과 JSON을 정리하려면 JSON 정렬·검사기를, 표로 만들려면 JSON CSV 변환을 써 보세요.

자주 묻는 질문

XML 속성은 어떻게 바뀌나요?

기본으로는 @로 시작하는 키가 됩니다. 예: {"@id": "bk101"}. 접두사를 바꾸거나 @attributes로 묶거나 속성을 아예 뺄 수 있습니다.

같은 요소가 어떤 때는 객체, 어떤 때는 배열로 나와요.

기본 규칙에서는 같은 부모 안에 두 번 이상 나오는 요소만 배열이 됩니다. 항상 같은 모양이 필요하면 배열에서 '항상'을 고르세요.

XML이 변환되지 않아요. 오류 위치는 어떻게 찾나요?

오류 상자에 줄, 칸, 이유와 함께 문제가 된 줄이 표시됩니다. '입력창에서 위치 보기'를 누르면 입력 상자의 그 위치로 이동합니다.

공공데이터포털 API 응답도 바꿀 수 있나요?

네. 응답 XML을 그대로 붙여넣으면 됩니다. items 아래 item이 1건일 때도 배열로 받고 싶다면 배열 규칙을 '항상'으로 바꾸세요.

큰 XML 파일도 되나요?

네. 큰 파일은 입력 상자 대신 파일 카드로 보여 주고 백그라운드에서 변환합니다. 결과 상자에는 앞부분만 보이지만 복사와 다운로드에는 전체가 들어갑니다.