YAML 이란?
YAML 은 사람이 쓰고 읽으라고 만든 데이터 형식이다. 구조를 괄호가 아니라 들여쓰기로 나타내고, 문자열에 대개 따옴표가 필요 없으며, 주석을 쓸 수 있다. JSON 의 상위집합이라 유효한 JSON 은 모두 유효한 YAML 이다. 설정 파일·CI 파이프라인·쿠버네티스 매니페스트에서 둘이 늘 함께 나오는 이유다.
이 변환기는 YAML 을 JSON 으로, JSON 을 YAML 로 바꾸며 입력하는 동안 검증한다. 문서가 파싱되지 않으면 파서의 메시지를 그대로 보여준다. 거기 줄 번호가 있기 때문이다 — YAML 오류의 답은 거의 언제나 들여쓰기이고, 오류 문장을 다시 쓰는 것보다 위치가 중요하다.
YAML is a data serialization language designed to be human friendly and work well with modern programming languages.
기능
- 양방향
- 설정을 API 나 테스트에 넣으려면 YAML → JSON, API 응답을 사람이 관리할 형태로 만들려면 JSON → YAML.
- 줄을 짚는 오류
- 파서의 메시지를 고치지 않고 보여준다. YAML 오류에서 쓸모 있는 부분은 줄 번호이고, 원인은 거의 항상 들여쓰기다.
- 진짜 YAML 파서
- 앵커·별칭·여러 줄 블록 스칼라·다중 문서를 정규식 흉내가 아니라 완전한 YAML 1.2 구현이 처리한다.
- 아무것도 업로드되지 않는다
- 배포 매니페스트와 CI 설정에는 호스트 이름, 버킷 이름, 내부 서비스 구조가 들어 있다. 모든 파싱이 브라우저에서 일어난다.
사용법
- 1
방향을 고른다
YAML → JSON 또는 JSON → YAML.
- 2
문서를 붙여넣는다
입력하는 동안 변환 결과가 따라 바뀐다.
- 3
파서가 짚은 자리를 고친다
파싱이 실패하면 메시지에 줄 번호가 나온다. 거기 들여쓰기부터 본다 — 탭과 어긋난 중첩이 YAML 실패의 대부분이다.
- 4
결과를 복사한다
변환된 문서를 클립보드로 가져간다.
자주 묻는 질문
JSON 은 유효한 YAML 인가?
그렇다. YAML 1.2 는 JSON 의 엄격한 상위집합이라 유효한 JSON 문서는 YAML 로 파싱되고 같은 데이터를 낸다. 반대는 성립하지 않는다 — YAML 에는 JSON 이 표현할 수 없는 주석·앵커·따옴표 없는 문자열이 있다.
YAML 이 파싱되지 않는다
거의 항상 들여쓰기다. YAML 은 들여쓰기에 탭을 금지하고, 한 블록 안에서 간격이 일정해야 하며, 콜론 뒤에 공백이 없으면 그것까지 키로 본다. *, &, % 같은 문자로 시작하는 값도 따옴표가 필요하다.
버전 번호가 다른 값으로 바뀌었다
따옴표 없는 스칼라는 패턴으로 타입이 정해진다. 1.10 같은 값은 숫자 1.1 이 되고, YAML 1.1 파서에서는 yes·no·on·off 가 불리언이 된다 — 국가 코드 NO 가 false 로 바뀌는 이른바 "노르웨이 문제"다. 문자열로 남아야 하는 값은 따옴표로 감싼다.
YAML 에서 앞자리 0 을 유지하려면?
따옴표로 감싼다. 따옴표 없는 03187 은 숫자로 읽혀 0 이 사라지고, "03187" 은 문자열로 남는다. 우편번호·전화번호·버전 문자열이 모두 마찬가지다.
앵커나 다중 문서도 되나?
된다. 완전한 YAML 1.2 파서를 쓰므로 앵커와 별칭이 해석되고 블록 스칼라가 보존된다. JSON 으로 바꿀 때는 앵커가 펼쳐진다 — JSON 에는 참조를 표현할 방법이 없기 때문이다.
설정이 어디론가 전송되나?
아니다. 파싱과 직렬화 모두 브라우저에서 일어나고, 이 페이지에는 받을 백엔드가 없다.
이 도구가 따르는 규격
- YAML 1.2.2 명세 — YAML 이 JSON 의 엄격한 상위집합임을, 그리고 파싱 실패의 대부분을 만드는 들여쓰기 규칙을 정의한다.
- YAML 1.2.2 §2.1 — 컬렉션 — 들여쓰기에 탭을 금지하는 이유.
- RFC 8259 — JSON — 변환의 반대편. JSON 으로 바꿀 때 앵커를 펼쳐야 하는 이유이기도 하다.