YAML to JSON 변환기

YAML(Kubernetes 매니페스트, Docker Compose, CI 설정)을 붙여넣으면 깔끔한 JSON을 즉시 얻을 수 있습니다. 오류는 정확한 줄을 포인터로 보여 줍니다.

브라우저에서 실행가입 불필요업로드 없음

JSON 출력

YAML to JSON 사용 방법

  1. 왼쪽 입력란에 YAML을 붙여넣거나 .yaml/.yml 파일을 엽니다.
  2. 입력하는 즉시 오른쪽에 JSON이 나타납니다. 출력 들여쓰기는 공백 2칸, 4칸, 탭 중에서 고르세요.
  3. 키를 알파벳순으로 정렬하려면 키 정렬을 체크합니다. 설정을 비교할 때 도움이 됩니다.
  4. YAML이 잘못된 경우 상태 표시줄에 행과 열이 표시되고, 그 아래에 문제가 된 줄이 ^ 표시와 함께 나타납니다.
  5. JSON을 복사하거나 다운로드하고, 바꾸기를 눌러 다시 YAML로 변환할 수도 있습니다.

YAML이 JSON으로 바뀌는 방식

JSON은 YAML 1.2의 부분집합이므로 모든 YAML 매핑은 JSON 객체가, 시퀀스는 배열이, 스칼라는 문자열·숫자·불리언·null이 됩니다. YAML 전용 기능은 변환 중에 해석됩니다.

  • 주석(# …)은 JSON에 주석이 없으므로 제거됩니다.
  • 앵커와 별칭(&base, *base, <<: *base)은 전체 복사본으로 펼쳐집니다.
  • 타임스탬프(예: 2024-01-02)는 ISO 8601 문자열이 됩니다.
  • 여러 줄 문자열(| 리터럴 블록과 > 접힘 블록)은 \n 이스케이프가 들어간 일반 문자열이 됩니다.

멀티 문서 YAML

Kubernetes 매니페스트에서 흔히 보듯, 한 파일에 ---로 구분된 여러 YAML 문서가 들어 있을 수 있습니다. JSON에는 이에 해당하는 것이 없으므로 변환기는 문서마다 요소 하나씩을 가진 JSON 배열을 반환하고 상태 표시줄에 이를 알립니다. 끝에 홀로 있는 ---는 무시됩니다.

YAML 1.1과 1.2의 함정

이 변환기는 현재 명세인 YAML 1.2를 따릅니다. 하지만 많은 오래된 도구(PyYAML, Ruby의 Psych, 일부 Kubernetes·Ansible 버전)는 아직 규칙이 다른 YAML 1.1로 읽습니다.

  • 노르웨이 문제: YAML 1.1에서 country: no는 false를 뜻하므로 노르웨이 국가 코드 NO가 사라집니다. yes, on, off, y, n도 마찬가지입니다. YAML 1.2는 true와 false만 불리언으로 취급합니다.
  • 8진수: 0755는 1.1에서는 8진수지만 1.2에서는 일반 10진수이며, 1.2는 0o755를 씁니다. 파일 권한은 안전하게 따옴표로 감싸세요.
  • 60진수: 1.1에서는 22:30이 숫자 1350으로 파싱될 수 있습니다. 시간과 "8080:80" 같은 포트 매핑은 따옴표로 감싸세요.

JSON → YAML 방향에서는 모호한 문자열('no', 'on', 'y')을 자동으로 따옴표 처리하므로, 생성된 YAML은 두 버전에서 똑같이 읽힙니다.

자주 묻는 질문

YAML이 어딘가에 업로드되나요?
아니요. 파싱은 오픈 소스 js-yaml 라이브러리로 브라우저에서 이루어집니다. 시크릿이나 내부 호스트 이름이 담긴 설정도 내 컴퓨터 밖으로 나가지 않습니다.
YAML에서 “bad indentation” 오류가 나는 이유는 무엇인가요?
YAML의 중첩은 공백으로 정의되며 들여쓰기에 탭을 쓸 수 없습니다. 형제 키가 정확히 같은 위치에 정렬되어 있는지, 목록 항목(-)이 부모 키 아래에서 일관되게 들여쓰기되어 있는지 확인하세요.
YAML 주석은 어떻게 되나요?
제거됩니다. JSON에는 주석 문법이 없어 주석을 옮길 수 없습니다. 다시 YAML로 변환해도 복원되지 않습니다.
<code>no</code>가 문자열로 남은 이유는 무엇인가요?
이 도구는 true/false만 불리언으로 보는 YAML 1.2를 따릅니다. 오래된 YAML 1.1 파서는 no, yes, on, off를 불리언으로 바꿉니다(“노르웨이 문제”).
여러 리소스가 담긴 Kubernetes 매니페스트도 변환할 수 있나요?
네. ---로 구분된 각 리소스가 출력 JSON 배열의 요소 하나가 되며, JSON 목록도 받아들이는 jq나 kubectl apply -f -에 바로 쓸 수 있습니다.

관련 도구