가이드

JSON을 XML로 변환하는 방법

JSON 텍스트를 입력하고 루트 이름과 보기 형식을 확인하면 JSON 구조를 XML 요소 구조로 변환할 수 있습니다. 변환 뒤에는 객체, 배열, 빈 입력, `null`, 잘못된 JSON이 각각 어떤 결과를 냈는지 구분해 확인하세요.

도구 JSON XML 변환기

JSON 텍스트를 입력하고 루트 이름과 보기 형식을 확인하면 JSON 구조를 XML 요소 구조로 변환할 수 있습니다. 변환 뒤에는 객체, 배열, 빈 입력, null, 잘못된 JSON이 각각 어떤 결과를 냈는지 구분해 확인하세요.

JSON 구조를 XML로 바꾸기 전에 확인할 내용

JSON 텍스트를 XML 구조로 바꾸려면 입력 내용과 결과의 형태를 함께 살펴봐야 합니다. 이 도구는 JSON을 읽어 XML로 변환하며, 루트 이름과 보기 편한 출력 형식을 조정할 수 있습니다. 별도의 XML 구조를 처음부터 작성하는 대신 JSON의 객체와 배열이 결과에서 어떤 요소로 나타나는지 확인하면서 변환할 수 있다는 점이 핵심입니다.

객체를 넣으면 각 항목이 자식 요소로 이어집니다. 예를 들어 nameage라는 항목은 각각 이름이 같은 요소로 나타납니다. 객체 안에 또 다른 객체가 있으면 안쪽 객체는 바깥 항목에 해당하는 요소 안에 배치됩니다. 따라서 입력의 중첩 관계를 먼저 읽어 두면 변환 결과를 점검하기가 수월합니다.

이용 목적에 따라 보기 형식의 의미도 달라집니다. 사람이 결과를 읽거나 구조를 확인할 때는 기본으로 켜진 보기 편한 형식을 유지하는 편이 알맞습니다. 결과를 다른 작업에 넘길 때는 들여쓰기 자체보다 요소의 이름과 배열 구조가 입력 의도에 맞는지 먼저 확인해야 합니다. 같은 JSON이라도 결과를 해석하는 기준을 정해 두면 변환 뒤의 확인 과정에서 혼동을 줄일 수 있습니다.

입력부터 결과 확인까지의 순서

  1. 변환할 JSON 텍스트를 입력합니다. 객체, 배열, 문자열, 숫자, 불리언, null처럼 사용하려는 JSON 값을 입력하되, 키와 문자열에는 큰따옴표를 사용합니다. 입력란을 비워 둔 상태와 JSON 값으로 null을 적은 상태는 서로 다르게 처리되므로 두 경우를 같은 빈 결과로 생각하지 않습니다.

  2. 루트 이름을 확인합니다. 직접 이름을 정하지 않으면 기본 루트 이름은 root입니다. 원하는 이름을 지정할 때에는 XML 이름으로 사용할 수 있는 문자로 작성하는 편이 좋습니다. JSON 키와 루트 이름에 지원되지 않는 문자가 있으면 그 문자는 밑줄로 바뀝니다. 이름이 숫자로 시작하면 앞에 밑줄이 붙으므로, 입력한 표기와 결과의 요소 이름이 달라질 수 있습니다.

  3. 보기 편한 출력을 원하면 기본으로 활성화된 형식을 그대로 둡니다. 일반적인 비어 있지 않은 JSON에는 XML 선언이 앞에 붙고 들여쓰기가 시도됩니다. 단순한 구조 확인이 목적이라면 이 설정이 내용을 읽는 데 도움이 됩니다. 반대로 결과의 핵심은 줄바꿈의 모양이 아니라 요소의 계층, 이름, 반복 구조에 있으므로 서식만 보고 변환 성공 여부를 판단하지 않습니다.

  4. 변환을 실행한 뒤 결과의 첫 부분에서 루트 요소를 확인합니다. 객체를 입력했다면 각 멤버가 자식 요소가 되었는지 살핍니다. 중첩 객체는 해당 멤버의 요소 안쪽에 남아 있어야 하며, 값이 여러 개인 배열은 입력 위치에 따라 반복 요소로 표현됩니다.

  5. 배열을 입력했다면 감싸는 이름을 확인합니다. 최상위 배열의 항목과 배열 안의 객체 항목은 item 요소로 감싸집니다. 객체 안에 있는 원시값 배열은 포함한 멤버 이름을 반복 요소 이름으로 사용합니다. 더 안쪽의 목록은 부모 태그를 다시 사용할 수 있으므로, 배열의 위치와 값의 종류를 기준으로 결과를 읽습니다.

  6. 결과에 특수 문자가 포함된 텍스트가 있다면 XML 문법에 맞게 이스케이프되었는지 확인합니다. 원래 텍스트와 표시 모양이 달라져도 텍스트 내용이 XML에서 안전하게 표현되도록 바뀐 것일 수 있습니다. 마지막으로 입력이 비어 있었는지, null이었는지, 일반 JSON이었는지를 구분해 결과의 형태를 기록합니다.

결과 형태를 해석하는 기준

정상적인 JSON 객체의 결과는 루트 요소 아래에 입력 멤버에 대응하는 자식 요소가 놓이는 형태입니다. 중첩 객체가 있다면 바깥 멤버의 요소가 안쪽 구조를 담으므로, 요소의 깊이가 JSON 객체의 중첩 수준과 맞는지 비교하면 됩니다. 이 비교는 값이 맞는지만 보는 것보다 구조가 보존되었는지 확인하는 데 유용합니다.

배열 결과는 배열이 놓인 위치에 따라 읽어야 합니다. 최상위 배열이나 배열 안의 객체는 item 요소로 표현될 수 있고, 객체의 원시값 배열은 그 배열을 가진 멤버 이름이 반복될 수 있습니다. 중첩 목록에서는 부모 태그가 다시 사용될 수 있으므로, 배열이 있다는 이유만으로 같은 요소 이름을 예상하지 않는 것이 좋습니다.

빈 입력은 변환 실패가 아니라 빈 XML 문자열을 반환합니다. 반면 JSON 값 null은 빈 XML 문자열이 아니라 자체 종료 루트 요소를 만듭니다. 일반 JSON을 보기 편한 형식으로 처리한 결과에는 XML 선언과 들여쓰기가 시도될 수 있지만, 빈 입력과 null에는 각각 별도의 예외적인 결과 모양이 적용됩니다.

문법이 잘못된 JSON은 변환된 XML 문서가 아니라 실패 결과를 냅니다. 쉼표, 괄호, 큰따옴표를 수정한 뒤 다시 실행해야 하며, 실패 결과를 일부 XML이 생성된 것으로 해석해서는 안 됩니다. 또한 키나 루트 이름이 바뀌었다면 XML 이름 규칙에 따른 치환을 먼저 확인합니다.

텍스트의 <, >, & 같은 특수 문자는 직렬화 과정에서 XML 표현에 맞게 이스케이프됩니다. 그러므로 결과를 원문과 문자 그대로 비교하기보다, XML을 다시 읽었을 때 의도한 텍스트와 구조를 표현하는지 살피는 방식이 적절합니다. 최종 확인에서는 입력 상태, 루트 이름, 배열 위치, 보기 형식을 함께 기록하면 결과 차이를 설명하기 쉽습니다.

사용 예시

사용자 이름과 태그 목록이 들어 있는 JSON 객체를 XML 구조로 바꾸려는 상황입니다.

입력란에 {"user":{"name":"Min","tags":["a","b"]}}를 넣고 루트 이름은 기본값으로 둔 뒤 변환합니다.

기본 루트 요소 아래에 user 요소가 생기고, 그 안에 name 요소와 tags라는 이름의 반복 요소가 배치되는 형태입니다.

제한 사항

  • JSON 키 표기는 XML 이름 규칙에 따라 바뀔 수 있고 배열의 위치에 따라 결과 요소 이름과 중첩 방식이 달라집니다.

자주 발생하는 오류

  • 키에 따옴표를 빠뜨리거나 마지막 항목 뒤에 쉼표를 남기면 JSON 문법이 깨져 실패 결과가 나옵니다. 입력을 다시 보면서 문자열과 키의 큰따옴표, 중괄호와 대괄호의 짝, 항목 사이의 쉼표를 차례로 고친 뒤 변환을 실행하세요.

자주 묻는 질문

입력이 비어 있으면 어떤 결과가 나오나요?

입력란이 비어 있거나 공백만 있으면 빈 XML 문자열이 반환됩니다. JSON 값으로 null을 입력한 경우에는 자체 종료 루트 요소가 생성되므로 두 결과를 구분해야 합니다.

JSON 키가 XML 요소 이름으로 그대로 유지되나요?

지원되지 않는 문자가 포함된 키는 해당 위치가 밑줄로 바뀔 수 있고, 숫자로 시작하는 이름에는 앞에 밑줄이 붙습니다. 따라서 JSON 키의 원래 표기가 XML 요소 이름에 그대로 남는다고 전제하지 않는 편이 좋습니다.

배열은 XML에서 어떻게 표시되나요?

배열의 위치와 항목 종류에 따라 형태가 달라집니다. 최상위 배열과 배열 안의 객체 항목은 item 요소로 감싸지고, 객체에 속한 원시값 배열은 포함한 멤버 이름을 반복 요소 이름으로 사용할 수 있습니다.

도구

JSON XML 변환기