ToolDeck

YAML to JSON 변환기

YAML을 JSON 형식으로 변환

예시 시도

YAML 입력

JSON 출력

로컬에서 실행 · 시크릿 붙여넣기 안전
JSON이 여기에 표시됩니다…
이것도 써보세요:YAML to XML

YAML to JSON 변환이란?

YAML to JSON 변환은 YAML(YAML Ain't Markup Language)로 작성된 데이터를 JSON(JavaScript Object Notation)으로 변환하는 작업입니다. 두 형식 모두 구조화된 데이터를 키-값 쌍, 시퀀스, 중첩 객체로 표현하지만 문법이 다릅니다. YAML은 들여쓰기와 최소한의 구두점을 사용하는 반면, JSON은 중괄호, 대괄호, 필수 따옴표를 사용합니다. 서로 다른 형식을 요구하는 시스템 간에 설정 데이터를 이동할 때 두 형식 간 변환이 자주 필요합니다.

YAML은 사람이 읽기 쉽도록 설계되었습니다. 주석, 여러 줄 문자열, 앵커, 별칭을 지원하는데, 이 중 어떤 것도 JSON에는 존재하지 않습니다. YAML을 JSON으로 변환하면 YAML 고유 기능들이 처리됩니다. 앵커는 인라인으로 확장되고, 주석은 삭제되며, 여러 줄 블록은 이스케이프 문자열로 변환됩니다. 출력 결과는 어떤 JSON 파서도 읽을 수 있는 유효한 JSON입니다.

YAML 1.2 명세는 JSON을 YAML의 부분 집합으로 명시적으로 정의합니다. 즉, 유효한 JSON 문서는 모두 유효한 YAML이기도 합니다. 반대는 성립하지 않습니다. 주석, 앵커, 복잡한 키를 사용하는 YAML 문서는 JSON에 직접적으로 대응하는 표현이 없어 변환 과정에서 단순화해야 합니다. 이 도구는 그 변환을 자동으로 처리하여 유효한 YAML 입력으로부터 깔끔하고 잘 정형화된 JSON을 생성합니다.

YAML 1.2 Specification — yaml.org →

온라인 YAML to JSON 변환기를 사용하는 이유

YAML을 JSON으로 수동으로 변환하는 것은 오류가 발생하기 쉬우며, 특히 깊이 중첩된 구조나 여러 줄 값이 있을 때 더욱 그렇습니다. 브라우저 기반 변환기는 결과를 즉시 제공하고 애플리케이션에 도달하기 전에 YAML 문법 오류를 잡아냅니다.

브라우저에서 즉시 변환
YAML을 붙여넣으면 밀리초 내에 형식화된 JSON 출력이 나타납니다. 설치할 CLI 도구도, 빌드 단계도, 관리할 의존성도 없습니다.
🔀
모든 유효한 YAML 구조 지원
중첩 매핑, 시퀀스, 여러 줄 문자열(리터럴 및 폴드 블록), 앵커, 별칭, 병합 키, YAML 1.2 스칼라 타입을 모두 지원합니다.
🔒
데이터 개인정보 보호
모든 파싱은 JavaScript를 사용하여 브라우저에서 로컬로 실행됩니다. YAML 내용은 서버로 전송되지 않으므로 자격 증명이나 내부 경로가 포함된 설정 파일도 안전하게 사용할 수 있습니다.
📋
출력 형식 복사 및 조정
2칸 들여쓰기와 4칸 들여쓰기 사이에서 전환할 수 있습니다. 버튼 한 번으로 JSON 결과를 클립보드에 복사하여 코드, API 요청, 설정 파일에 바로 사용하세요.

YAML to JSON 활용 사례

프론트엔드 개발
디자인 시스템이나 CMS의 YAML 설정 파일을 JSON으로 변환하여 JSON 입력이 필요한 JavaScript 번들러, REST API, i18n 라이브러리에서 사용하세요.
백엔드 엔지니어링
Spring Boot의 application.yml이나 Rails의 database.yml을 JSON으로 변환하여 JSON 설정만 허용하는 배포 스크립트, API 게이트웨이, 서비스에 공급하세요.
DevOps 및 CI/CD
docker-compose.yml, GitHub Actions 워크플로, Kubernetes 매니페스트를 JSON으로 변환하여 유효성 검사 도구, OPA 같은 정책 엔진, jq를 이용한 디버깅에 활용하세요.
QA 및 테스트
YAML 테스트 픽스처를 Postman, Insomnia, 또는 JSON 요청 본문을 기대하는 자동화 테스트 스위트용 JSON 페이로드로 변환하세요.
데이터 엔지니어링
Airflow, dbt, Dagster 같은 YAML 형식의 파이프라인 정의를 스키마 유효성 검사, 프로그래밍 방식의 조작, 또는 메타데이터 카탈로그 연동을 위해 JSON으로 변환하세요.
학습 및 문서화
설정 형식을 학습하거나 문서를 작성할 때 YAML 구조가 JSON 동등값으로 어떻게 매핑되는지 빠르게 확인하세요.

YAML to JSON 타입 매핑 참조

모든 YAML 데이터 타입은 변환 중에 특정 JSON 타입으로 매핑됩니다. 아래 표는 각 YAML 구성 요소와 그에 대응하는 JSON 출력을 보여줍니다. 이 매핑을 이해하면 변환 후 데이터가 어떻게 표현될지 예측하고 불리언이나 null 값 같은 타입에서 예상치 못한 결과를 방지할 수 있습니다.

YAML 타입YAML 문법JSON 출력
Mappingname: Alice{ "name": "Alice" }
Sequence- apple\n- banana["apple", "banana"]
Stringgreeting: hello world"hello world"
Integercount: 4242
Floatratio: 3.143.14
Booleanactive: truetrue
Nullvalue: nullnull
Multiline (|)bio: |\n Line one\n Line two"Line one\nLine two\n"
Folded (>)note: >\n A long\n paragraph"A long paragraph\n"
Anchor/Alias&default\n <<: *defaultResolved inline (no $ref)

YAML vs JSON 문법 비교

YAML과 JSON은 동일한 데이터 모델을 표현하지만 문법 규칙이 다릅니다. 아래 차이점은 주석과 앵커 같은 일부 YAML 기능이 JSON에 대응하는 표현이 없는 이유를 설명합니다.

YAML
중첩에 들여쓰기를 사용합니다(중괄호 없음). #으로 주석을 지원합니다. 문자열에 대부분 따옴표가 필요 없습니다. |(리터럴)과 >(폴드) 블록 스칼라로 여러 줄 값을 지원합니다. 재사용을 위한 앵커(&name)와 별칭(*name)을 지원합니다. YAML 1.2에서는 true와 false만 불리언으로 인식합니다. 구 YAML 1.1 파서는 yes, no, on, off도 허용했지만 YAML 1.2에서는 이를 일반 문자열로 처리합니다.
JSON
중첩에 중괄호와 대괄호를 사용합니다. 주석 문법이 없습니다. 모든 문자열에 큰따옴표가 필요합니다. 여러 줄 문자열 리터럴이 없으며, 대신 \n 이스케이프 시퀀스를 사용합니다. 앵커나 별칭 메커니즘이 없습니다. 불리언 값은 엄격하게 소문자 true와 false입니다. 모든 키는 따옴표로 감싼 문자열이어야 합니다. 후행 쉼표는 유효하지 않습니다.

코드 예제

다음은 YAML을 JSON으로 프로그래밍 방식으로 변환하는 예제입니다. 각 예제는 YAML 문자열을 파싱하여 형식화된 JSON을 출력합니다.

JavaScript (Node.js)
import { load } from 'js-yaml'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const json = JSON.stringify(load(yamlStr), null, 2)
console.log(json)
// → {
// →   "server": {
// →     "host": "localhost",
// →     "port": 8080,
// →     "ssl": true
// →   }
// → }
Python
import yaml, json

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: s3cret
"""

data = yaml.safe_load(yaml_str)
print(json.dumps(data, indent=2))
# → {
# →   "database": {
# →     "host": "db.example.com",
# →     "port": 5432,
# →     "credentials": {
# →       "user": "admin",
# →       "password": "s3cret"
# →     }
# →   }
# → }
Go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"gopkg.in/yaml.v3"
)

func main() {
	yamlData := []byte(`
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
`)

	var obj map[string]interface{}
	if err := yaml.Unmarshal(yamlData, &obj); err != nil {
		log.Fatal(err)
	}
	jsonBytes, _ := json.MarshalIndent(obj, "", "  ")
	fmt.Println(string(jsonBytes))
	// → { "services": { "web": { "image": "nginx:latest", "ports": ["80:80"] } } }
}
CLI (yq + jq)
# Convert a YAML file to JSON with yq
yq -o=json config.yaml > config.json

# Pipe YAML into yq for one-off conversion
echo "name: demo" | yq -o=json
# → { "name": "demo" }

# Python one-liner (no extra install on most systems)
python3 -c "import yaml, json, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < config.yaml

자주 묻는 질문

YAML은 JSON의 상위 집합인가요?
네, YAML 1.2(2009년 출시)부터 그렇습니다. 모든 유효한 JSON 문서는 유효한 YAML이기도 합니다. YAML 명세는 완전한 JSON 호환성을 보장하기 위해 의도적으로 업데이트되었습니다. 반대는 성립하지 않습니다. 주석, 앵커, 따옴표 없는 키 같은 YAML 기능은 JSON에 대응하는 표현이 없습니다.
변환 중 YAML 주석은 어떻게 처리되나요?
주석은 삭제됩니다. JSON에는 주석 문법이 없으므로 YAML 입력에서 #으로 시작하는 줄은 변환 과정에서 사라집니다. 주석을 보존해야 한다면 원본 YAML 파일을 진실의 원천으로 유지하고 필요할 때마다 JSON을 생성하세요.
YAML 앵커와 별칭은 어떻게 처리되나요?
앵커(&name)와 별칭(*name)은 파싱 중에 해석됩니다. 별칭은 앵커된 데이터의 완전한 복사본으로 교체됩니다. 결과 JSON에는 참조가 없으며 모든 값이 인라인으로 확장됩니다. 병합 키(<<: *name)도 동일한 방식으로 처리됩니다.
YAML to JSON 변환에서 데이터가 손실될 수 있나요?
데이터 값의 경우에는 그렇지 않습니다. 모든 YAML 스칼라 타입(문자열, 숫자, 불리언, null)은 JSON에 직접적인 대응 타입이 있습니다. 손실되는 것은 주석, 태그 지시어, 앵커 이름, 블록과 플로우 스타일의 구분입니다. YAML에서 사용자 정의 태그(!!python/object, !!timestamp 등)를 사용한다면 파서에 따라 일반 값으로 해석되거나 파싱 오류가 발생할 수 있습니다.
YAML의 불리언 'yes'가 JSON에서 문자열이 되는 이유는 무엇인가요?
이 도구는 YAML 1.2 불리언 해석을 따르는 js-yaml v4를 사용합니다. true와 false(대소문자 무관)만 불리언으로 인식됩니다. yes, no, on, off 같은 값은 일반 문자열로 처리되어 JSON 출력에 따옴표로 감싼 문자열로 나타납니다. 불리언이 예상되는 곳에 문자열 값이 나타난다면 YAML 소스에서 true 또는 false를 사용하도록 변경하세요.
이 도구가 처리할 수 있는 최대 YAML 파일 크기는 얼마인가요?
도구가 브라우저에서 실행되므로 한도는 기기의 가용 메모리에 따라 다릅니다. 실제로 수 메가바이트 크기의 파일은 문제없이 변환됩니다. 매우 큰 파일(50MB 이상)의 경우 yq 같은 CLI 도구나 PyYAML을 사용하는 Python 스크립트가 더 안정적입니다. 이 도구들은 모든 데이터를 한 번에 메모리에 올리지 않고 스트리밍 방식으로 처리할 수 있기 때문입니다.
여러 줄 YAML 문자열은 JSON으로 어떻게 변환되나요?
YAML에는 두 가지 여러 줄 블록 스칼라 스타일이 있습니다. 리터럴 블록(|)은 줄 바꿈을 JSON 문자열의 \n 문자로 보존합니다. 폴드 블록(>)은 단일 줄 바꿈을 공백으로 교체하여 여러 줄을 단일 단락으로 만듭니다. 두 스타일 모두 기본적으로 후행 개행 문자를 추가하는데, 줄 자르기 표시자(|- 또는 >-)로 제거할 수 있습니다.