YAML → JSON

YAML은 손으로 쓰기 더 좋고, JSON은 프로그램으로 소비하기 더 좋으며, 많은 현대 도구(CI 파이프라인, Kubernetes, Ansible)는 둘 다 받습니다. JSON을 고집하는 도구, API Gateway 정의, CloudFormation 템플릿, 일부 웹훅 본문, 에 설정을 붙여넣어야 할 때 이 변환기가 그 변환을 해줍니다. 앵커, 병합, YAML 전용 타입(날짜, 8진수, null, ~)이 모두 JSON 등가물로 정규화됩니다.

YAML을 JSON으로 변환하는 방법

  1. 1

    YAML 붙여넣기

    유효한 YAML 1.1 또는 1.2 문서이면 무엇이든.

  2. 2

    앵커 해석

    앵커(`&x`)와 별칭(`*x`)이 인라인으로 확장됩니다. 병합 키(`<<`)는 평탄화됩니다.

  3. 3

    타입 정규화

    날짜, null 값, 불리언이 모두 JSON 등가물로 변환됩니다.

  4. 4

    JSON 출력

    정렬 출력 또는 압축, 원하는 대로.

예시 변환

YAML:

defaults: &defaults
  timeout: 30
  retries: 3

production:
  <<: *defaults
  host: prod.example.com
  debug: false

staging:
  <<: *defaults
  host: staging.example.com
  debug: true

JSON(앵커 해석됨):

{
  "defaults": {
    "timeout": 30,
    "retries": 3
  },
  "production": {
    "timeout": 30,
    "retries": 3,
    "host": "prod.example.com",
    "debug": false
  },
  "staging": {
    "timeout": 30,
    "retries": 3,
    "host": "staging.example.com",
    "debug": true
  }
}

타입 매핑

YAML JSON
문자열 문자열
정수 숫자
실수 숫자
불리언(true, false) 불리언
널(null, ~, 빈 값) null
타임스탬프 ISO 8601 문자열
시퀀스(리스트) 배열
매핑 객체

JSON이 표현할 수 없는 YAML 전용 항목

  • 주석. JSON에는 표준 주석 구문이 없습니다. 주석은 버려집니다.
  • 다중 문서 스트림(--- 구분자). JSON은 파일당 한 문서입니다. 여러 개일 때 변환기는 문서 배열을 내보냅니다.
  • 앵커와 별칭. 해석되어 인라인으로 복제됩니다.
  • 복합 키(비문자열 매핑 키). JSON 키는 문자열이어야 하므로 복합 키는 문자열화됩니다.

1.1 vs 1.2 함정

  • YAML 1.1은 yes, no, on, off, y, n을 불리언으로 파싱합니다. 국가 코드로서의 NO가 조용히 false가 됩니다.
  • YAML 1.2는 불리언을 true와 false로 제한합니다. 더 안전하지만 많은 파서(PyYAML 기본 포함)는 여전히 1.1을 씁니다.

변환기는 1.2 의미론을 기본으로 하고, 1.1이라면 결과가 달라졌을 때 경고합니다.

JSON에서 YAML로의 왕복

JSON → YAML은 보통 무손실입니다(JSON은 YAML 1.2 구문의 부분집합). YAML → JSON은 손실적입니다: 주석과 병합 키 구조가 사라집니다. 왕복할 계획이라면 원본 YAML을 버전 관리에 보존하세요.

자주 묻는 질문

아니요, 그것들은 YAML 파싱 전에 실행되는 자체 템플릿팅이 있습니다. 먼저 템플릿을 렌더링한 뒤(kustomize build나 helm template로) 그 출력을 여기에 넣으세요.

YAML 타임스탬프는 JSON에서 ISO 8601 문자열이 됩니다. 2026-04-18은 "2026-04-18"이 됩니다. 시간과 시간대는 보존됩니다.

브라우저에서 실용적 한계는 약 10 MB입니다. 더 큰 파일에는 명령줄에서 yq나 python -c "import yaml, json; print(json.dumps(yaml.safe_load(open(file))))"를 사용하세요.

아니요. 변환은 브라우저에서 실행되며 아무것도 전송되지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다