JSON YAML 변환 — JSON을 YAML로 바꾸기
JSON을 YAML로 변환 (들여쓰기 선택, 키 정렬, 오류 위치 표시)
브라우저에서 처리 · 서버로 전송되지 않음
소개
YAML은 사람이 읽고 고치기 쉬운 설정 형식으로, 쿠버네티스 매니페스트, GitHub Actions, Docker Compose 같은 곳에서 널리 씁니다. API 응답이나 JSON으로 된 설정을 YAML로 옮겨야 할 때 이 도구를 쓰세요. 붙여 넣는 즉시 결과가 나옵니다.
사용법
- JSON을 입력 칸에 붙여 넣습니다.
- 들여쓰기를 2칸 또는 4칸으로 고릅니다. 대부분의 YAML 도구는 2칸을 관례로 씁니다.
- 필요하면 키 정렬을 켭니다. 모든 중첩 단계에 적용됩니다.
- 결과를 복사합니다. JSON에 오류가 있으면 줄과 열이 표시됩니다.
기준
- 입력은 RFC 8259의 엄격한 JSON입니다. 출력은 YAML 1.2 코어 스키마와 호환되도록 js-yaml 라이브러리로 만듭니다.
- 문자열이
true,null,123,007처럼 다른 타입으로 읽힐 수 있으면 자동으로 따옴표를 붙입니다. 그래서 되돌렸을 때 타입이 바뀌지 않습니다. - 한글, 한자, 이모지는 이스케이프하지 않고 그대로 씁니다.
- 줄 길이로 인한 자동 줄바꿈은 끄고, 같은 객체가 여러 번 나와도 앵커·별칭(
&,*)을 만들지 않고 각각 풀어서 씁니다. - 빈 배열은
[], 빈 객체는{}로 나옵니다. 최상위가 문자열이나 숫자 같은 값 하나여도 변환됩니다. - 2^53을 넘는 정수는 읽는 단계에서 반올림되므로 경고를 보여 줍니다.
예시
입력:
{"name":"app","ports":[80,443],"owner":{"이름":"홍길동"},"debug":false,"version":"1.0"}
결과:
name: app
ports:
- 80
- 443
owner:
이름: 홍길동
debug: false
version: '1.0'
참고
- YAML은 들여쓰기가 곧 구조입니다. 붙여 넣은 뒤 탭 문자를 섞어 편집하면 깨지므로 항상 공백을 쓰세요.
- 쿠버네티스처럼
1.0이나on같은 값을 문자열로 기대하는 곳에서는 이 도구가 붙인 따옴표를 지우지 마세요. 값의 타입이 바뀔 수 있습니다. - 변환 결과를 설정 파일에 쓰기 전에는 대상 도구의 검증 기능으로 한 번 확인하는 것이 좋습니다.
- 결과의 들여쓰기 칸 수를 바꿔도 값은 바뀌지 않으니, 팀의 YAML 스타일에 맞춰 2칸이나 4칸을 고르면 됩니다.
자주 겪는 경우
- 문자열
"yes","no","on","off"는 YAML 1.1 파서에서 불리언으로 읽힐 수 있어서 따옴표가 붙어 나옵니다. 따옴표를 지우면 일부 도구에서 값이 바뀌니 그대로 두세요. - 줄바꿈이 들어 있는 여러 줄 문자열은
|-블록 형태로 나와 읽기 쉽습니다. 값은 같습니다. - 값이
null이면key: null로 쓰며, 키만 남기고 비우지 않습니다. 비워 두면 도구마다 해석이 다를 수 있기 때문입니다. on,yes,null,1처럼 다른 타입으로 읽힐 수 있는 키에는 따옴표가 붙습니다. 한글 키는 그대로 쓰입니다.- 키 정렬을 켜면 사람이 diff를 볼 때 편하지만 원래 순서가 중요한 설정(예: 파이프라인 단계)은 배열을 쓰세요. 배열 순서는 바뀌지 않습니다.
활용 팁
- 쿠버네티스나 Docker Compose 파일을 JSON으로 된 예제에서 옮겨 올 때 특히 유용합니다. 변환한 YAML을
kubectl apply --dry-run같은 검증 명령으로 한 번 확인하세요. - GitHub Actions 워크플로를 JSON으로 설계했다면
on키가 YAML 1.1에서 불리언으로 읽히는 문제를 조심해야 합니다.on,yes,1처럼 다른 타입으로 읽힐 수 있는 키에도 따옴표가 붙으니 그대로 두고, 대상 도구가 어떻게 읽는지 확인하세요. - 긴 문자열이나 한글 문장도 줄을 나누지 않고 한 줄로 두기 때문에, 에디터에서 줄 바꿈 표시를 켜고 확인하면 편합니다.
- 같은 JSON을 2칸과 4칸으로 바꿔 보면서 팀의 린트 규칙(yamllint 등)에 맞는 모양을 찾을 수 있습니다.
- 변환 과정에서 서버로 전송되는 데이터는 없으므로 비밀번호나 토큰이 들어 있는 설정 파일도 로컬에서 안전하게 바꿀 수 있습니다. 다만 결과를 저장소에 올리기 전에 비밀값은 반드시 제거하세요.
더 알아두면 좋은 점
- 앵커와 별칭을 쓰고 싶다면 이 도구가 만든 YAML에 직접
&와*를 추가해 중복을 줄이세요. 변환기는 일부러 모든 값을 풀어서 보여 주므로 처음엔 길어 보일 수 있습니다. - 숫자 키(
"1": "a")는 YAML에서 정수 키로 읽힐 수 있어 따옴표가 붙습니다. 이 따옴표를 유지하면 JSON으로 되돌렸을 때도 문자열 키가 그대로 남습니다. - 날짜처럼 보이는 문자열(
"2024-01-02")도 따옴표를 붙여 문자열로 유지합니다. 도구에 따라 날짜 타입으로 읽히는 것을 막기 위한 안전장치입니다. - 중첩이 깊은 JSON은 들여쓰기가 깊어져 줄이 길어집니다. 2칸을 쓰면 화면에 더 많이 담을 수 있고, 4칸은 구조가 더 또렷하게 보입니다.
- 배열 안에 객체가 있으면 각 객체가
-로 시작하는 항목이 되고, 첫 키는 같은 줄에 이어 쓰입니다. YAML의 표준 표기이므로 그대로 쓰면 됩니다. - 숫자와 불리언은 따옴표 없이 쓰이고, 문자열
"true"나"123"만 따옴표가 붙으므로 타입 구분이 분명합니다.
추가 예시
| JSON | YAML 결과 |
|---|---|
{"a":[]} |
a: [] |
{"a":"true"} |
a: 'true' (문자열이라 따옴표) |
{"a":null} |
a: null |
{"a":"한 줄\n두 줄"} |
a: |- 블록 안에 두 줄 |
YAML로 옮긴 뒤에는 yamllint 같은 도구로 스타일을 점검하고, 쿠버네티스나 CI 설정이라면 해당 도구의 검증 명령을 한 번 실행해 보는 것이 안전합니다.
옵션을 바꿀 때마다 입력을 다시 붙여 넣을 필요가 없습니다. 들여쓰기와 키 정렬을 번갈아 바꿔 보면서 팀의 스타일에 맞는 결과를 고르고, 마지막에 복사 버튼을 누르세요.
자주 묻는 질문
변환한 YAML을 다시 JSON으로 바꾸면 같은 값이 되나요?
구조와 값은 같게 돌아옵니다. "true"나 "123"처럼 다른 타입으로 읽힐 수 있는 문자열은 따옴표를 붙여 문자열임을 유지하므로 타입도 보존돼요. 객체 키 순서는 유지하되 키 정렬을 켜면 순서가 바뀝니다.
긴 문장이 여러 줄로 접히지 않나요?
접지 않습니다. 줄 길이 제한을 두지 않고 문자열을 한 줄 그대로 내보내므로 값이 쪼개지지 않습니다. 줄바꿈이 들어 있는 문자열은 YAML의 블록 문자열로 표현될 수 있어요.
JSON 오류는 어떻게 알려 주나요?
입력에서 처음 문법에 어긋나는 글자의 줄과 열을 알려 줍니다. 마지막 쉼표나 주석처럼 JSON에서 허용되지 않는 요소도 오류로 표시합니다.
매우 큰 정수도 안전한가요?
JavaScript로 읽기 때문에 9007199254740991(2^53-1)을 넘는 정수는 반올림됩니다. 그런 숫자가 있으면 경고가 나오니 문자열로 감싸 두세요.