YAML → JSON 변환기

왼쪽에 YAML을 붙여넣으면 오른쪽에 JSON으로 변환돼요. 모든 처리는 브라우저 안에서 진행되며, 업로드도 가입도 필요 없습니다.

  1. 왼쪽 텍스트 영역에 YAML을 붙여넣어 주세요.
  2. "JSON으로 변환" 버튼을 누르면 오른쪽에 결과가 표시돼요.
  3. 복사하거나 다운로드 버튼으로 data.json 파일로 저장할 수 있어요.
  4. 변환에 실패하면 오류 메시지가 어느 줄에 문제가 있는지 알려줍니다.
어떤 도구인가요?

YAML 1.2 문서를 JSON으로 변환합니다. 매핑은 객체로, 시퀀스는 배열로, 스칼라 값은 YAML 규칙에 따라 숫자, 부울, null, 문자열 중 하나로 형식이 정해져요. 앵커와 별칭은 변환 과정에서 모두 해석됩니다. `---` 로 구분된 다중 문서 스트림은 문서 배열로 평탄화됩니다.

예시

YAML 입력:

name: Ada
tags:
  - math
  - logic
active: true

JSON 출력:

{
  "name": "Ada",
  "tags": [
    "math",
    "logic"
  ],
  "active": true
}

자주 만나는 YAML 오류와 해결 방법

YAML은 공백에 민감하기 때문에 "파싱 실패" 메시지의 대부분은 들여쓰기 문제예요. 파서가 줄과 열 번호를 알려주니, 아래 패턴을 참고해 빠르게 수정할 수 있습니다.

  • 탭으로 들여쓰기. YAML 1.2는 들여쓰기에 탭을 허용하지 않아요. 모든 탭을 공백으로 바꿔 주세요. 대부분의 에디터에 "탭을 공백으로 변환" 명령이 있습니다.
  • 들여쓰기 폭이 일관되지 않음. 4칸 들여쓰기 항목 아래에 2칸 들여쓰기 자식 항목이 오면 파싱이 실패해요. 보통 2칸으로 통일해서 문서 전체에 동일한 폭을 사용하세요.
  • 부울로 해석되는 문자열. YAML 1.1에서는 `yes`, `no`, `on`, `off` 가 부울로 파싱돼서 국가 코드 "NO" 같은 값에서 사고가 났어요. 값을 따옴표로 감싸세요: `country: "NO"`. 이 도구는 이 문제가 없는 YAML 1.2를 사용하지만, 외부에서 받은 입력은 여전히 영향을 받을 수 있어요.
  • 특수 문자가 따옴표 없이 사용됨. `- `, `:`, `?`, `&`, `*`, `!`, `|`, `>`, `\'`, `"`, `%`, `@`, `` ` `` 로 시작하는 값은 따옴표로 감싸야 해요. 구두점이 들어간 문자열은 일단 따옴표로 감싸는 습관이 안전합니다.
  • 닫지 않은 따옴표. `"` 나 `\'` 의 닫는 짝이 없으면 파서가 다음 따옴표까지의 모든 내용을 하나의 문자열로 처리해요. 실제 오류 위치와 동떨어진 줄 번호를 보고할 수 있으니 주의하세요.
  • 앵커와 별칭 불일치. `&name` 으로 선언되지 않은 앵커를 `*name` 별칭으로 참조하면 오류가 발생해요. 모든 별칭에 대해 그보다 앞에 같은 이름의 앵커가 선언되어 있는지 확인하세요.
자주 묻는 질문

YAML 1.1의 "Norway problem" 같은 동작도 처리하나요?

아니요, 의도적으로 처리하지 않아요. 이 도구는 YAML 1.2 모드의 js-yaml을 사용하기 때문에 따옴표 없는 `NO` 는 부울 false 가 아니라 문자열 "NO" 로 해석됩니다. YAML 1.1 부울 동작에 의존하는 입력이 있다면 붙여넣기 전에 따옴표로 감싸 주세요. 두 스펙을 한 도구에서 섞으면 데이터가 조용히 잘못 변환될 위험이 있어서 그렇게 하지 않았어요.

YAML 앵커와 별칭은 어떻게 변환되나요?

변환 시점에 모두 해석돼서 일반 데이터로 펼쳐져요. JSON에는 참조 문법이 없기 때문에 결과 JSON에는 동일한 값이 중복으로 포함됩니다. 참조 자체를 보존하려면 JSON 이외의 형식을 사용해야 해요.

여러 문서가 들어 있는 YAML 파일도 변환되나요?

네. `---` 로 구분된 여러 문서가 들어 있으면 JSON 배열로 변환되며 각 문서가 배열의 한 요소가 돼요. 단일 문서라면 최상위 객체나 값 하나로 변환됩니다.

날짜 문자열이 ISO 형식으로 나오는 이유가 뭔가요?

YAML에는 `2025-12-31` 같은 네이티브 타임스탬프 타입이 있어서 파서가 이를 JavaScript Date 로 읽고, JSON으로는 ISO 8601 문자열로 직렬화돼요. 원래 표기를 그대로 유지하고 싶다면 YAML에서 따옴표로 감싸 주세요: `release: "2025-12-31"`.

민감한 YAML 설정 파일에도 안전한가요?

네. 모든 처리는 브라우저 안에서 진행돼요. 입력은 이 페이지의 JavaScript가 파싱·변환할 뿐 어떤 서버에도 전송되지 않습니다. 로그도 입력 분석도 보관도 없어요. 브라우저 개발자 도구의 네트워크 탭에서 변환 버튼을 눌러도 요청이 발생하지 않는 것을 직접 확인할 수 있어요.

얼마나 큰 YAML 파일까지 처리되나요?

브라우저 메모리 한도까지 가능하지만, 약 10 MB가 넘어가면 텍스트 영역 자체가 느려져요. 더 큰 입력은 잘라서 변환하거나 같은 라이브러리(js-yaml)를 명령줄에서 직접 쓰는 편이 빠릅니다.