CodeKitHub
JSON 도구

JSON ↔ YAML 변환기

마지막 업데이트:

이 도구는 JSON을 YAML로, YAML을 JSON으로 양방향 변환하며 모든 처리가 브라우저 안에서 이루어집니다. 데이터를 붙여넣고 방향을 선택하면 깔끔하고 올바르게 들여쓰기된 결과를 얻을 수 있습니다. Kubernetes 매니페스트, Docker Compose 파일, GitHub Actions 워크플로처럼 YAML로 저장되지만 생성하거나 확인할 때는 JSON이 더 편한 설정 파일을 다룰 때 유용합니다.

이 도구는 무엇인가요?

YAML은 오늘날 대부분의 설정 파일이 선택하는 형식입니다. Kubernetes 매니페스트, Docker Compose, GitHub Actions와 GitLab CI 파이프라인, Ansible 플레이북 등이 대표적입니다. 대부분의 키에 따옴표가 필요 없고, 마지막 쉼표 실수도 걱정할 필요 없으며, 주석까지 지원되기 때문에 사람이 손으로 편집하기에는 JSON보다 훨씬 읽기 편합니다. 반면 JSON은 대부분의 API와 프로그래밍 언어가 네이티브로 생성하고 소비하는 형식입니다.

이 도구는 YAML 스펙의 널리 쓰이는 자바스크립트 구현체인 js-yaml을 기반으로 YAML 사양을 따르므로, kubectl이나 CI 러너 같은 YAML 인식 도구가 적용하는 것과 동일한 규칙으로 파싱과 생성이 이루어집니다.

JSON을 YAML로 변환하면 객체는 들여쓰기된 key: value 블록이 되고 배열은 `-`로 시작하는 목록 항목이 됩니다. YAML을 JSON으로 변환하면 그 반대 작업을 하며, 동시에 따옴표 없는 `true`, `null`, 숫자 같은 YAML 고유의 타입 축약 표현을 올바른 JSON 타입으로 풀어줍니다.

왜 사용해야 할까요?

  • 양방향 지원 — 같은 화면에서 JSON을 YAML로, 또는 YAML을 JSON으로 변환할 수 있습니다.
  • js-yaml 기반의 표준 준수 파싱 및 생성 — Kubernetes, CI 시스템, Ansible 같은 실제 YAML 도구가 기대하는 결과와 일치합니다.
  • 어떤 깊이든 중첩된 객체와 배열을 처리하며, YAML의 들여쓰기 기반 구조와 JSON의 중괄호·대괄호 구조를 정확히 오갑니다.
  • YAML의 타입 축약 표현을 정확히 해석합니다 — 따옴표 없는 true/false, null, 숫자 값이 문자열이 아니라 올바른 JSON 타입으로 변환됩니다.
  • 클립보드 복사 또는 .json / .yaml 파일로 다운로드할 수 있습니다.
  • 100% 클라이언트 측 처리 — 붙여넣은 어떤 데이터도 어디에도 업로드되지 않습니다.

사용 방법

  1. 방향을 선택하세요: "JSON → YAML" 또는 "YAML → JSON".
  2. 입력창에 데이터를 붙여넣으세요.
  3. "변환"을 클릭하세요.
  4. 결과를 확인한 뒤 복사하거나 "다운로드"를 눌러 파일로 저장하세요.

예시

입력

{"name":"Alice","roles":["admin","editor"],"active":true}

결과

name: Alice
roles:
  - admin
  - editor
active: true

배열이 "roles" 아래에 대시로 시작하는 목록이 되고, 불리언 값은 문자열 "true"가 아니라 따옴표 없는 true 그대로 유지되는 점을 확인하세요.

실전 팁

  • Kubernetes 매니페스트나 GitHub Actions 워크플로를 작성할 때: 먼저 JSON으로 구조를 잡고(많은 에디터와 AI 도구가 JSON을 더 안정적으로 생성합니다) 최종 파일은 YAML로 변환하세요.
  • 말썽을 부리는 YAML 설정을 디버깅할 때: JSON으로 변환해보면 어떤 값이 문자열, 숫자, 불리언인지 정확히 보입니다 — YAML의 유연한 문법은 JSON에서는 명확히 드러나는 타입 불일치를 숨기기 쉽습니다.
  • JSON에 특수문자가 포함된 키나 숫자로 시작하는 키가 있다면, js-yaml이 YAML 출력에서 자동으로 따옴표를 붙여 나중에 다시 올바르게 파싱되도록 처리합니다.

타입 강제 변환이 YAML에서 가장 까다로운 이유

대부분의 값에 따옴표가 필요 없다는, JSON 대비 YAML의 가장 큰 사용성 장점은 동시에 미묘한 버그의 가장 큰 원인이기도 합니다. 대표적인 예가 '노르웨이 문제'입니다. 많은 구식 파서가 따르는 YAML 1.1에서는 따옴표 없는 값 `no`가 문자열 "no"가 아니라 불리언 `false`로 해석되는데, 이 때문에 실제로 노르웨이 국가 코드를 나열하는 설정이 깨진 사례가 있었습니다. 이 도구는 YAML 1.2 사양을 따르며, 따옴표 없이 불리언으로 해석되는 값의 범위를 `true`와 `false`(및 그 대소문자 변형)로 좁혀서 이런 종류의 뜻밖의 결과를 줄여줍니다(완전히 없애지는 못합니다). 값이 어떻게 타입 지정될지 확신이 서지 않는다면, YAML에서 명시적으로 따옴표를 붙이는 것이 가장 안전한 선택입니다.

자주 묻는 질문

YAML 주석은 JSON으로 변환했다가 다시 되돌려도 남아 있나요?

아니요. JSON에는 주석이라는 개념이 없으므로 YAML을 JSON으로 변환하면 원본의 # 주석은 모두 사라집니다. 그 JSON을 다시 YAML로 변환해도 주석은 되살아나지 않습니다. 이는 도구의 버그가 아니라 형식 자체의 근본적인 한계입니다.

YAML의 앵커와 별칭(&, *)은 어떻게 처리되나요?

내부적으로 사용하는 파서(js-yaml)는 JSON을 생성하기 전에 앵커와 별칭을 먼저 해석합니다. 그래서 & 앵커와 * 별칭으로 데이터 블록을 재사용하는 YAML 파일을 변환하면, 참조된 모든 위치에 그 데이터가 완전히 펼쳐진 형태로 JSON에 반영됩니다.

YAML의 숫자가 JSON에서 문자열로 나오거나, 반대로 그런 경우는 왜 생기나요?

YAML 원본에서 값에 따옴표가 붙어 있다면(예: version: "3.10") 이는 의도적으로 문자열로 취급됩니다. 이렇게 처리하는 이유는 따옴표 없는 YAML 숫자 3.10을 실수(float)로 파싱하면 끝자리 0이 사라질 수 있기 때문입니다. 특정 값을 텍스트로 유지하고 싶다면 원본 YAML에서 그 값에 따옴표를 붙이세요.

---로 구분된 여러 문서가 있는 YAML 파일도 변환할 수 있나요?

이 도구는 한 번에 하나의 YAML 문서만 변환합니다. 파일에 --- 구분자로 나뉜 여러 문서가 있다면 한 섹션씩 변환하거나, 상황에 맞는다면 구분자를 제거하고 하나의 문서로 합친 뒤 변환하세요.

제 데이터가 어딘가에 업로드되나요?

아니요. 변환은 js-yaml 라이브러리를 통해 전적으로 브라우저 안에서 이루어지며 서버로 아무것도 전송되지 않습니다. 그래서 내부 호스트명이나 인프라 정보가 담긴 실제 설정 파일에도 안전하게 사용할 수 있습니다.

관련 도구