YAML ↔ JSON 변환기 및 포매터

YAML과 JSON 형식을 상호 변환하거나, YAML을 포맷팅하고 유효성을 검사할 수 있습니다. 입력 형식을 자동 감지합니다. 무료이며 브라우저에서 완전히 실행됩니다.

사용 방법

  1. YAML 또는 JSON을 입력 영역에 붙여넣으세요——도구가 형식을 자동으로 감지합니다
  2. 「JSON으로 변환」을 클릭하여 JSON으로 변환하거나, 「YAML로 변환」을 클릭하여 YAML로 변환하세요
  3. 「YAML 포맷」을 사용하면 변환 없이 YAML 문서를 보기 좋게 정리할 수 있습니다
  4. 「최소화」를 사용하면 압축된 한 줄 JSON 출력을 생성할 수 있습니다
  5. 들여쓰기 선택기를 조정하여 출력 들여쓰기를 제어하세요
  6. 「복사」를 클릭하여 결과를 복사하거나, 「지우기」를 클릭하여 초기화하세요

자주 묻는 질문

  • YAML이란 무엇인가요?

    YAML(YAML Ain't Markup Language)은 사람이 읽기 쉬운 데이터 직렬화 형식으로, 설정 파일, CI/CD 파이프라인, Kubernetes 매니페스트 등에 널리 사용됩니다. 중괄호 대신 들여쓰기로 구조를 표현합니다.

  • JSON 대신 YAML을 사용해야 할 때는 언제인가요?

    사람이 직접 읽거나 편집하는 설정 파일에는 YAML을 사용하세요. 주석을 지원하고 덜 장황합니다. API 응답과 데이터 교환에는 JSON을 사용하세요. 더 범용적으로 지원되며 엄격하게 정의되어 있습니다.

  • YAML은 JSON의 모든 내용을 표현할 수 있나요?

    네. JSON은 YAML의 부분집합입니다——유효한 JSON은 모두 유효한 YAML이기도 합니다. YAML은 추가로 주석, 여러 줄 문자열, 앵커, 별칭을 지원합니다.

  • 데이터가 서버로 전송되나요?

    아니요. 모든 변환은 js-yaml 라이브러리를 사용하여 브라우저 내에서 완전히 처리됩니다. 데이터는 사용자의 기기 밖으로 나가지 않습니다.

  • 입력이 유효하지 않으면 어떻게 되나요?

    버튼 아래에 오류 메시지가 표시되어 파싱이 실패한 위치를 정확히 설명해 줍니다. 문제를 빠르게 찾아 수정할 수 있습니다.

YAML과 JSON의 관계

JSON은 YAML의 **부분집합(subset)**입니다. 유효한 JSON은 모두 유효한 YAML이기도 합니다. 즉 YAML 파서는 JSON 문서를 읽을 수 있지만, JSON 파서는 YAML 문서를 읽을 수 없습니다.

YAML 1.2 표준은 JSON과의 완전한 호환성을 목표로 설계되었습니다. 반면 YAML 1.1은 일부 JSON 값을 다르게 해석할 수 있으므로(예: 숫자 형식의 차이) 변환 시 파서 버전에 주의가 필요합니다.

언제 YAML을 사용하고 언제 JSON을 사용할까

YAML이 적합한 경우

  • 설정 파일(Configuration): docker-compose.yml, .github/workflows/*.yml, kubernetes/*.yaml 등 사람이 직접 편집하는 파일
  • 주석이 필요한 경우: 설정값에 설명을 추가해야 할 때
  • 중첩이 깊은 구조: 들여쓰기 방식이 괄호 방식보다 읽기 편한 경우
  • 여러 줄 문자열: 긴 텍스트나 코드 블록을 포함할 때

JSON이 적합한 경우

  • REST API 응답: 사실상 업계 표준으로 모든 클라이언트가 JSON을 파싱할 수 있습니다.
  • 데이터베이스 저장: PostgreSQL, MongoDB 등에서 JSON을 네이티브 타입으로 지원합니다.
  • 성능이 중요한 파싱: JSON 파서가 YAML 파서보다 훨씬 빠릅니다.
  • JavaScript 환경: JSON.parse()JSON.stringify()가 내장되어 있어 별도 라이브러리가 필요 없습니다.

변환 시 주의사항

YAML → JSON 변환

YAML에만 있는 기능들은 JSON으로 변환할 수 없거나 손실됩니다.

  • 주석 제거: # 이것은 주석입니다는 JSON으로 변환 시 완전히 사라집니다.
  • 앵커와 별칭: &anchor*alias는 JSON에 해당하는 개념이 없어 실제 값으로 인라인 확장됩니다.
  • 불리언 자동 변환: YAML의 yes/no/on/off는 JSON에서 true/false로 변환됩니다.

JSON → YAML 변환

JSON은 대부분 YAML로 무손실 변환됩니다. 단, JSON의 숫자 형식(매우 크거나 정밀한 부동소수점)이 YAML에서 다르게 표현될 수 있습니다.

특수 문자 처리

YAML에서 콜론(:), 해시(#), 대괄호([], {}) 등 특수문자를 포함하는 문자열 값은 따옴표로 감싸야 합니다. JSON에서 가져온 문자열에 이런 특수문자가 있다면 YAML로 변환할 때 자동으로 따옴표 처리가 이루어집니다.

실전 활용 사례

Kubernetes 매니페스트나 Helm 차트를 작성할 때 기존 JSON 형식의 설정을 YAML로 변환하면 훨씬 읽기 쉬운 형태로 관리할 수 있습니다. 반대로 YAML로 작성된 설정을 API 요청 본문으로 사용해야 할 때는 JSON으로 변환이 필요합니다.