JSON to YAML 변환기

JSON을 Kubernetes, Docker Compose, GitHub Actions, Ansible용의 깔끔하고 읽기 쉬운 YAML로 바꾸세요. 들여쓰기, 스타일, 따옴표를 자유롭게 조절할 수 있습니다.

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

JSON 출력

JSON to YAML 사용 방법

  1. 왼쪽 입력란에 JSON을 붙여넣거나 .json 파일을 엽니다.
  2. 입력하는 즉시 오른쪽에 YAML이 나타납니다.
  3. 들여쓰기(공백 2칸 또는 4칸)와 스타일을 고릅니다: 블록(한 줄에 키 하나) 또는 지정한 중첩 단계부터의 플로우({a: 1}/[x, y]).
  4. 따옴표 스타일을 고르고, 알파벳순으로 정렬하려면 키 정렬을 체크합니다.
  5. YAML을 복사하거나 다운로드합니다. 잘못된 JSON은 행, 열, 예상 원인과 함께 표시됩니다.

JSON을 YAML로 변환하는 이유

JSON은 기계와 API에 적합하지만, YAML은 중괄호도 필수 따옴표도 없고 주석을 지원해 사람이 읽고 수정하기 쉽습니다. Kubernetes, Helm, Docker Compose, GitHub Actions, GitLab CI, Ansible 등 대부분의 인프라 도구는 YAML로 설정하지만, 출발점이 되는 데이터(API 출력, kubectl get -o json, Terraform state)는 JSON인 경우가 많습니다.

블록 스타일과 플로우 스타일

블록 스타일은 각 키와 목록 항목을 한 줄씩 두며 설정 파일의 관례적인 선택입니다. 플로우 스타일은 JSON처럼 인라인 {}와 []를 사용해 짧은 말단 구조를 간결하게 유지합니다. “레벨 2부터 플로우”는 상위 두 단계를 블록 스타일로 두고 그보다 깊은 부분을 인라인으로 만들어, 포트나 환경 변수처럼 작은 객체가 길게 나열된 목록에 잘 맞습니다.

안전한 따옴표 처리

YAML 파서가 잘못 해석할 수 있는 문자열은 자동으로 따옴표로 감쌉니다. 'no', 'on', '1.0', 'null' 같은 값, *나 &로 시작하는 문자열, : 를 포함한 문자열이 해당합니다. 스타일 가이드가 모든 문자열에 따옴표를 요구한다면 항상 작은따옴표 또는 항상 큰따옴표를 선택하세요.

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은 두 버전에서 똑같이 읽힙니다.

자주 묻는 질문

변환 과정에서 손실이 없나요?
네. 모든 JSON 문서는 유효한 YAML 1.2이며, 생성된 YAML은 파싱하면 정확히 같은 데이터로 돌아옵니다. 바꾸기를 눌러 확인할 수 있습니다.
어떤 문자열은 따옴표가 있고 어떤 것은 없는 이유는 무엇인가요?
필요할 때만을 선택하면 'yes', '123', 특수 문자가 있는 문자열처럼 따옴표가 없으면 의미가 바뀌는 값에만 따옴표를 붙입니다. 나머지는 가독성을 위해 그대로 둡니다.
출력에 주석을 추가할 수 있나요?
JSON에는 주석이 없어 변환할 주석도 없지만, 복사한 YAML에 # comments를 직접 추가할 수 있습니다.
키 순서가 바뀌나요?
아니요. 키 정렬을 체크하지 않으면 JSON의 키 순서를 그대로 유지합니다.
데이터는 안전한가요?
네. 변환기는 브라우저에서 실행되며 입력 내용으로 네트워크 요청을 보내지 않습니다.

관련 도구