본문 바로가기

JSON·XML·YAML 파서

JSON·XML·YAML 을 붙여넣거나 파일로 열면 문법을 검사하고(틀리면 몇 줄 몇 칸인지), 접고 펼치는 트리로 보여 주고, 값·키를 검색하고, 경로로 값을 찾고, 정리·압축하고, 서로 변환합니다. 모든 처리는 이 브라우저 안에서만 이뤄지며 입력과 파일은 서버로 보내지 않습니다.

붙여넣거나 연 JSON·XML·YAML 은 이 브라우저에서만 읽고 서버로 전송되거나 저장되지 않습니다. 토큰·개인정보가 섞여 있어도 안심하고 쓰되, 공용 컴퓨터에서는 쓴 뒤 화면을 닫으세요.

알아 둘 점

  • JSON 은 엄격하게 읽습니다 — 주석, 마지막 쉼표, 작은따옴표, 따옴표 없는 키는 오류로 알려 줍니다.
  • 숫자는 원문 그대로 보관합니다. 12345678901234567890 이나 1.0 이 정리·변환을 거쳐도 바뀌지 않습니다.
  • 같은 키가 두 번 나오면 오류는 아니지만 경고로 알려 줍니다(실제 프로그램은 마지막 값만 씁니다).
  • XML 의 DOCTYPE 내부 선언(ENTITY)은 해석하지 않고 거부합니다. 엔티티 폭탄·외부 파일 읽기 같은 공격의 입구이기 때문입니다. 외부 DTD 를 가리키는 선언은 읽지 않고 건너뜁니다.
  • XML 은 < > & " ' 와 숫자 참조(A)만 풀어 줍니다. 그 밖의 &이름; 은 오류입니다.
  • 입력은 2MB, 중첩은 200단계까지입니다.
  • YAML 은 자주 쓰는 문법을 지원합니다 — 맵·목록·따옴표 글·| > 블록 글·[ ] { } 흐름·주석. 앵커(&)·별칭(*)·태그(!)·여러 문서(---)·? 복합 키·여러 줄 따옴표 글은 지원하지 않고 오류로 알려 줍니다. 별칭은 내용을 곱절로 부풀리는 공격의 입구이기도 해서 해석하지 않습니다.
  • YAML 값은 1.2 규칙으로 읽습니다. null · true/false · 10진 숫자만 값이 되고 yes/no · 0x1F · 날짜는 글자 그대로 문자열입니다. 들여쓰기에는 공백만 쓸 수 있습니다(탭은 오류).

자주 묻는 질문

입력한 JSON·XML 이 서버로 전송되나요?

아닙니다. 읽기·검사·변환 모두 이 브라우저에서 이루어지며 어디로도 전송·저장되지 않습니다.

「코드 정리」나 개발자 도구의 JSON 탭과 무엇이 다른가요?

그쪽은 예쁘게 다시 쓰는 도구이고, 여기는 구조를 읽는 도구입니다. 트리로 훑어보기, 경로로 값 찾기, 오류 위치, 구조 요약, JSON↔XML 변환이 있습니다.

XML 을 JSON 으로 바꾸면 숫자가 문자열로 나와요.

XML 에는 값의 형식이 없어서 기본은 모두 문자열입니다. 「숫자·true/false 는 값으로 변환」을 켜면 숫자처럼 생긴 글만 숫자로 바꿉니다(007 같은 앞자리 0 은 문자열로 둡니다).

JSON 을 XML 로 바꿨다가 되돌리면 같은가요?

이 도구가 만든 규칙(속성 "@", 글 "#text", 반복은 배열) 안에서는 같습니다. 다만 빈 문자열과 null 은 둘 다 빈 요소라 null 로 돌아오고, 요소 이름으로 못 쓰는 키는 바뀝니다.

YAML 의 앵커(&)와 별칭(*)은 왜 안 되나요?

별칭은 같은 내용을 여러 번 가리키게 해 문서를 몇 단계만에 수십억 배로 부풀릴 수 있어(별칭 폭탄) 해석하지 않고 오류로 알려 드립니다. 별칭을 펼친 글을 붙여넣으면 읽을 수 있습니다.