SomeeLab.tools

YAML JSON 변환기

YAML을 JSON으로, JSON을 YAML로 바꿉니다. 앵커와 병합 키를 펼쳐 주고 들여쓰기 폭을 고를 수 있습니다. 가입 없이 브라우저에서 변환되므로 설정 파일이 기기 밖으로 나가지 않습니다.

들여쓰기

따옴표를 빼면 값이 바뀌는 자리

YAML은 따옴표 없는 값의 자료형을 스스로 정합니다. 여기서 사고가 납니다.

version: 1.10은 숫자로 읽혀 1.1이 됩니다. 끝자리 0이 사라져 버전이 달라집니다. zip: 01234도 숫자가 되어 앞의 0이 떨어진 1234로 바뀝니다. 우편번호, 사번, 전화번호처럼 앞자리 0이 뜻을 가지는 값은 반드시 "01234"처럼 따옴표로 묶으세요.

12:30 같은 시각 표기와 no, yes, on은 이 도구에서 문자열로 남습니다. 다만 파이썬의 PyYAML이나 루비처럼 오래된 규격을 따르는 파서에서는 no가 거짓으로 읽힙니다. 국가 코드 NO를 쓰다가 값이 false가 되는 일이 유명합니다. 여러 도구를 거치는 설정이라면 이런 낱말도 따옴표로 묶어 두는 편이 안전합니다.

들여쓰기 규칙

들여쓰기는 공백으로만 합니다. 탭은 문법 오류입니다. 편집기가 탭을 넣도록 설정돼 있으면 YAML 파일에서만 공백으로 바꾸세요.

같은 단계의 항목은 열을 정확히 맞춰야 합니다. 한 칸이라도 어긋나면 그 자리에서 오류가 납니다. 이 도구는 어긋난 줄과 칸 번호를 그대로 알려 줍니다.

앵커와 병합 키

&이름으로 한 덩어리에 이름을 붙이고 *이름으로 가져다 씁니다. 여기에 <<:를 더하면 그 덩어리를 다른 맵에 부어 넣습니다.

defaults: &d
  retry: 2
  image: node
job:
  <<: *d
  script: test

이 도구는 병합 키를 펼쳐서 내보내므로 jobretryimage가 들어간 JSON이 나옵니다. 펼치지 않으면 "<<"라는 키가 그대로 남아 쓸 수 없는 결과가 됩니다. GitLab CI와 도커 컴포즈 설정에서 자주 보이는 문법입니다.

JSON으로 가면 잃는 것

주석이 사라집니다. JSON에는 주석 문법이 없습니다. 설정 파일을 JSON으로 바꿔 저장하면 그동안 적어 둔 설명이 전부 없어지므로, 원본을 남겨 두고 작업하세요.

여러 문서도 담기지 않습니다. ---로 나뉜 문서가 여러 개면 이 도구는 오류를 냅니다. 조용히 첫 문서만 내보내면 나머지가 사라진 것을 눈치채지 못하기 때문입니다. 쿠버네티스 매니페스트처럼 문서를 여러 개 담은 파일은 하나씩 나눠 넣으세요.

날짜는 문자열이 됩니다. YAML은 날짜를 자료형으로 알아보지만 JSON에는 그런 형이 없습니다.

반대 방향으로 갈 때

JSON을 YAML로 바꾸면 따옴표가 대부분 사라져 읽기 편해집니다. 다만 앞자리 0이 있는 문자열이나 true처럼 보이는 문자열에는 따옴표가 그대로 남습니다. 그것을 떼면 뜻이 달라지기 때문이며, 남아 있는 편이 맞습니다.