YAML-JSON 변환기

한쪽에 입력하면 반대쪽이 실시간으로 변환됩니다. 설정 파일 등 기본적인 문법만 지원합니다.

⚠️ 지원 범위: 들여쓰기 기반 매핑(key: value)과 목록(- item), 기본 스칼라 값(문자열·숫자·불리언·null)만 지원합니다. 앵커(&, *), 여러 줄 문자열(|, >), 복잡한 플로우 스타일, 주석 등 고급 YAML 문법은 정확히 변환되지 않을 수 있습니다.

이 변환기가 하는 일과 하지 않는 일

Docker Compose, GitHub Actions, Kubernetes 매니페스트 같은 설정 파일은 YAML로 쓰이고, 프로그램이 주고받는 데이터는 JSON인 경우가 많습니다. 이 도구는 두 칸이 서로 연동되어 한쪽을 고치면 반대쪽이 바로 갱신됩니다. 목표는 사람이 쓰는 단순한 설정 YAML을 구조 그대로 JSON으로 확인하는 것이고, YAML 사양 전체를 구현한 파서가 아닙니다. 지원하는 것은 들여쓰기 매핑(키: 값), 목록(- 값), 목록 안의 매핑, 한 줄짜리 JSON식 배열·객체, 따옴표 문자열, 그리고 숫자·불리언·null입니다. 모든 처리는 브라우저에서만 일어나며 입력은 서버로 보내지 않습니다.

값의 타입은 이렇게 추론합니다

YAML은 따옴표가 없어도 값의 모양으로 타입을 정합니다. 아래 표는 같은 규칙의 함수에 값을 넣어 계산한 결과입니다. 숫자처럼 보이는 문자열이 숫자로 바뀌는 지점, 그리고 다른 파서와 결과가 달라질 수 있는 지점(yes, 0x1F, 날짜 등)을 확인하세요.

YAML 값JSON 결과타입
truetrue불리언
Truetrue불리언
yes"yes"문자열
~nullnull
nullnullnull
0077숫자
1.101.1숫자
1.01숫자
1e31000숫자
+33숫자
.50.5숫자
0x1F"0x1F"문자열
1_000"1_000"문자열
2024-01-05"2024-01-05"문자열
'it''s'"it's"문자열
"a\tb""a\tb"문자열
[1, 2][1,2]배열
{x: 1}"{x: 1}"문자열
[a, b]"[a, b]"문자열
1234567890123456789012345678901234567000숫자

검산한 변환 예시

예시 1. Docker Compose 모양의 중첩 구조. 매핑, 목록, 콜론이 든 값이 모두 의도대로 변환됩니다.

services:
  web:
    image: nginx:1.25
    ports:
      - "8080:80"
      - 443:443
    environment:
      - DEBUG=true
  db:
    image: postgres

↓ JSON

{
  "services": {
    "web": {
      "image": "nginx:1.25",
      "ports": [
        "8080:80",
        "443:443"
      ],
      "environment": [
        "DEBUG=true"
      ]
    },
    "db": {
      "image": "postgres"
    }
  }
}

예시 2. 지원하지 않는 문법이 조용히 틀리는 경우. 앵커(&b)와 별칭(*b)은 해석하지 않으므로 아래 문서는 base가 문자열 "&b"가 되고 그 아래 줄들은 결과에서 빠집니다. 정식 파서라면 base와 use가 모두 {"x": 1}가 되어야 합니다. 이 도구는 이런 경우 "2번째 줄부터 해석하지 못해 결과에서 빠졌습니다"라고 경고합니다.

base: &b
  x: 1
use: *b

↓ JSON (틀린 결과)

{
  "base": "&b"
}

JSON을 YAML로 바꿀 때의 따옴표 규칙

문자열 값을 따옴표 없이 내보내면 YAML로 다시 읽을 때 다른 타입이 될 수 있는 경우에 이 도구가 따옴표를 붙입니다. 아래 표가 그 결과이며, 왕복 변환에서 문자열이 불리언이나 숫자로 변하는 것을 막기 위한 규칙입니다.

JSON 문자열YAML 출력처리
"hello"hello그대로
"한글 값"한글 값그대로
"yes""yes"따옴표 추가
"on""on"따옴표 추가
"true""true"따옴표 추가
"007""007"따옴표 추가
"1.10""1.10"따옴표 추가
".5"".5"따옴표 추가
"a: b""a: b"따옴표 추가
"tag #1""tag #1"따옴표 추가
"-x""-x"따옴표 추가
"*ref""*ref"따옴표 추가
"line1\nline2""line1\nline2"따옴표 추가
""""따옴표 추가

키도 같은 규칙입니다. "yes"나 숫자로 시작하는 키, 공백이 든 키는 따옴표가 붙습니다. 반대로 JSON의 null은 YAML null로, 빈 배열·객체는 [], {}로 나갑니다.

지원하지 않는 문법과 대응

결과를 쓰는 방법

JSON 칸의 결과는 API 요청 본문이나 코드 안의 설정 객체로 바로 옮길 수 있고, 구조가 맞는지는 JSON 포맷터로 다시 검증하면 됩니다. 표 형태 데이터(행과 열)는 CSV-JSON 변환기가 맞습니다. 인코딩이 필요한 값이 있으면 Base64 변환기나URL 인코더를 이어서 쓰세요. 중요한 배포 설정은 이 변환 결과만 믿지 말고 사용하는 도구의 공식 검증 명령(예: 쿠버네티스는 서버 측 dry-run)으로 한 번 더 확인하세요.

자주 묻는 질문

변환 결과가 이상하게 나오면 어떻게 하나요?

먼저 입력 칸 아래의 "확인이 필요한 부분" 경고를 보세요. 줄 번호와 원인(탭, 앵커, 여러 줄 문자열 등)이 표시됩니다. 경고가 없는데 이상하다면 따옴표 없는 값이 숫자나 불리언으로 추론된 것은 아닌지 위 표와 비교해 보세요.

한글 키나 값도 되나요?

네. 키와 값 모두 유니코드 그대로 처리됩니다. JSON에서 YAML로 나올 때도 한글 키는 따옴표 없이 출력됩니다.

JSON이 YAML의 일부라는 말이 사실인가요?

YAML 1.2는 JSON을 거의 포함하도록 설계되어 대부분의 JSON 문서를 YAML로도 읽을 수 있습니다. 다만 이 도구의 YAML 파서는 단순형이라 중첩된 JSON을 한 줄로 쓴 YAML은 해석하지 못할 수 있으므로, JSON은 오른쪽 칸에 넣으세요.

들여쓰기는 몇 칸이어야 하나요?

2칸이든 4칸이든 상관없습니다. 하위 블록의 실제 들여쓰기 폭을 읽어 판단합니다. 같은 부모 아래 형제 항목의 들여쓰기만 정확히 일치하면 됩니다. 탭은 쓰지 마세요. 목록 항목 안에서 이어지는 키는 "- " 뒤 글자와 같은 열에 맞춰야 합니다.

다른 데이터 형식 변환 도구도 있나요?

CSV와 JSON 사이 변환은 CSV-JSON 변환기에서 할 수 있습니다.