사용 방법
- 변환 방향을 선택하세요: JSON → YAML 또는 YAML → JSON.
- 데이터를 붙여넣거나 “예제 사용”을 누르세요. 입력하는 대로 결과가 업데이트됩니다.
- 출력 들여쓰기를 2칸 또는 4칸으로 선택하세요.
- 결과를 복사하거나 다운로드하세요. “출력을 입력으로 사용”을 누르면 방향이 바뀌어 다시 변환할 수 있습니다.
작동 방식
변환에는 YAML 1.2 사양을 구현한 오픈 소스 yaml 라이브러리(버전 2)를 사용합니다. 실용적인 측면에서 YAML 1.2는 JSON의 상위 집합이므로 JSON 문서는 손실 없이 YAML로 변환됩니다. 맵, 목록, 문자열, 숫자, 불리언, null만 사용하는 YAML은 동일한 JSON으로 다시 변환됩니다.
YAML을 작성할 때는 다른 값으로 해석될 수 있는 문자열에 따옴표를 붙입니다. PyYAML과 여러 CI 도구처럼 오래된 YAML 1.1 파서는 yes, no, on, off를 불리언으로, 0777을 8진수로, 2024-01-31을 날짜로 읽으므로 각각 "yes", "0777", "2024-01-31"로 작성합니다. 긴 문자열은 여러 줄로 접지 않습니다. JSON에는 주석이 없으므로 주석은 변환 결과에 포함되지 않습니다.
YAML을 읽을 때는 앵커(&name)와 별칭(*name)이 << 병합 키를 포함해 확장되며, ---로 구분된 여러 문서는 JSON 배열로 변환됩니다. 브라우저를 보호하기 위해 별칭 확장에 제한을 두어 “billion laughs” 문서를 차단합니다. JSON에 대응하는 값이 없는 YAML 값은 가능한 한 비슷한 형태로 변환됩니다. .inf와 .nan은 null이 되고, 타임스탬프는 문자열로 유지됩니다. 구문 오류가 있으면 줄과 열을 표시합니다.
예시
Kubernetes 매니페스트
스크립트에서 JSON으로 작성한 Deployment를 kubectl 사용자가 기대하는 YAML 형식으로 변환합니다. containers 아래의 목록은 - name: web 형식으로 작성됩니다. "no" 같은 값은 문자열로 유지되도록 따옴표가 붙습니다.
앵커가 있는 CI 설정
파이프라인 파일에서 defaults: &defaults로 기본값을 정의하고 <<: *defaults로 재사용합니다. JSON으로 변환하면 병합 후 각 작업에 적용되는 키를 정확히 확인할 수 있습니다.
OpenAPI 사양
OpenAPI 파일은 YAML로 관리하지만 코드 생성기에는 JSON이 필요합니다. YAML을 붙여넣고 들여쓰기를 2칸으로 설정한 다음 .json 파일을 다운로드하세요.
자주 묻는 질문
YAML에서 "yes"에 따옴표가 붙는 이유는 무엇인가요?
PyYAML, Ansible 및 여러 도구에서 사용하는 YAML 1.1 규칙에서는 따옴표가 없는 yes, no, on, off를 불리언으로 처리합니다. 따옴표를 붙이면 어떤 파서에서도 문자열로 유지됩니다. 따옴표는 값에 포함되지 않습니다.
JSON으로 변환할 때 YAML 주석도 유지되나요?
아니요. JSON에는 주석 구문이 없으므로 주석은 제거됩니다. JSON을 다시 YAML로 변환해도 주석은 복원되지 않습니다.
---로 구분된 YAML 문서가 여러 개면 어떻게 되나요?
문서마다 요소 하나를 포함하는 JSON 배열 하나로 순서대로 변환됩니다. 문서가 하나뿐이면 해당 값으로 바로 변환됩니다.
CloudFormation의 !Ref 같은 사용자 지정 태그는 어떻게 되나요?
애플리케이션별 태그는 인식되지 않습니다. 도구는 경고를 표시하고 태그가 붙은 값을 일반 값으로 변환합니다. 따라서 !Ref MyBucket은 문자열 "MyBucket"이 되고 태그는 사라집니다.
개인정보 보호
두 방향의 변환 모두 브라우저에서만 실행됩니다. JSON 또는 YAML은 업로드되거나 저장되지 않으며 분석 데이터에 포함되지 않습니다.