🔄 YAML ↔ JSON Converter
📝 Input (JSON)
✨ Output (YAML)
ℹ️ About YAML ↔ JSON Converter
🔄 Bidirectional
Convert from JSON to YAML or YAML to JSON with ease. Swap formats instantly.
✨ Formatting
Auto-formatted output with proper indentation for both JSON and YAML.
📋 Copy & Download
Copy converted content to clipboard or download as a file.
🚀 Fast & Accurate
Server-side conversion ensures accuracy for complex nested structures.
YAML-JSON 변환 완벽 가이드
DevOps와 개발에 필수적인 데이터 형식 이해하기
YAML이란?
YAML(YAML Ain't Markup Language)은 사람이 읽기 쉬운 데이터 직렬화 형식입니다. 들여쓰기 기반의 간결한 문법으로, 설정 파일에서 가장 널리 사용됩니다.
YAML 예시
name: 홍길동
age: 30
address:
city: 서울
district: 강남구
skills:
- JavaScript
- Python
- Docker- 들여쓰기로 계층 구조 표현
- 주석 지원 (#으로 시작)
- 여러 문서를 하나의 파일에 저장 가능
- 앵커(&)와 별칭(*)으로 데이터 재사용
JSON 복습
JSON(JavaScript Object Notation)은 웹 API의 표준 데이터 형식입니다. 중괄호와 대괄호를 사용한 명확한 구조를 가집니다.
JSON 예시
{
"name": "홍길동",
"age": 30,
"address": {
"city": "서울",
"district": "강남구"
},
"skills": [
"JavaScript",
"Python",
"Docker"
]
}- 중괄호와 대괄호로 구조 표현
- 모든 키는 큰따옴표 필수
- 주석 미지원 (표준)
- 웹 브라우저에서 직접 파싱 가능
YAML vs JSON 비교
| 특성 | YAML | JSON |
|---|---|---|
| 가독성 | 매우 높음 (사람 친화적) | 좋음 (기계 친화적) |
| 주석 | 지원 (#으로 시작) | 미지원 |
| 복잡성 | 높음 (다양한 기능) | 낮음 (단순한 규칙) |
| 파일 크기 | 작음 (괄호/따옴표 생략) | 상대적으로 큼 |
| 파싱 속도 | 느림 | 빠름 |
| 주요 사용처 | 설정 파일, CI/CD, Kubernetes | API, 웹 통신, 데이터 저장 |
| 들여쓰기 | 필수 (의미 있음) | 선택 (가독성용) |
YAML이 주로 사용되는 곳
컨테이너 오케스트레이션 설정
docker-compose.yml클러스터 리소스 정의
deployment.yaml, service.yaml파이프라인 설정
.github/workflows/*.yml인프라 자동화 플레이북
playbook.yml애플리케이션 설정
application.ymlAPI 문서 정의
openapi.yamlYAML 문법 가이드
기본 키-값
key: value
name: "홍길동"
count: 42리스트
fruits:
- apple
- banana
- orange중첩 객체
person:
name: 홍길동
age: 30여러 줄 문자열
description: |
첫 번째 줄
두 번째 줄
folded: >
한 줄로 연결됨주석
# 이것은 주석입니다
name: value # 인라인 주석앵커 & 별칭
defaults: &defaults
adapter: postgres
dev:
<<: *defaults
database: dev_db변환 시 주의사항
YAML의 주석은 JSON 변환 시 사라집니다. JSON은 주석을 지원하지 않습니다.
YAML은 들여쓰기에 민감합니다. 탭 대신 스페이스를 사용하세요 (보통 2칸).
YAML의 앵커(&)와 별칭(*)은 JSON 변환 시 실제 값으로 확장됩니다.
YAML의 yes/no, on/off는 불린으로 해석됩니다. 문자열이면 따옴표를 사용하세요.
YAML은 날짜를 자동 파싱합니다. 2024-01-01은 날짜 객체가 됩니다.
007은 8진수로, 0x1A는 16진수로 해석됩니다. 문자열이면 따옴표 필요.
자주 발생하는 YAML 오류
expected <block end>, but found ...원인: 들여쓰기가 일관되지 않음
해결: 스페이스 2칸으로 통일
could not find expected ':'원인: 콜론 뒤에 공백이 없거나 특수문자 포함
해결: 콜론 뒤에 공백 추가, 값을 따옴표로 감싸기
found character that cannot start any token원인: 탭 문자 사용
해결: 탭을 스페이스로 변환
실용 예제: Docker Compose
YAML (docker-compose.yml)
version: "3.8"
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- api
api:
build: ./api
environment:
- NODE_ENV=production
- DB_HOST=db
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: secret자주 묻는 질문 (FAQ)
Q: YAML에서 yes, no, on, off가 문자열로 안 돼요
A: YAML 1.1에서 yes/no/on/off는 불린으로 해석됩니다. 문자열로 사용하려면 따옴표로 감싸세요: "yes", 'no'. YAML 1.2에서는 true/false만 불린입니다.
Q: JSON을 YAML로 변환하면 왜 다르게 보이나요?
A: YAML은 같은 데이터를 여러 방식으로 표현할 수 있습니다. 인라인 형식 {key: value}와 블록 형식 모두 유효합니다. 변환기는 보통 가독성 좋은 블록 형식을 사용합니다.
Q: YAML 파일 확장자는 .yml인가요 .yaml인가요?
A: 둘 다 유효합니다. 공식적으로 .yaml이 권장되지만, 많은 프로젝트에서 .yml을 사용합니다. 프로젝트 내에서 일관성을 유지하는 것이 중요합니다.
Q: YAML에서 특수문자가 포함된 값은 어떻게 하나요?
A: 콜론(:), 중괄호({}), 대괄호([]), 앰퍼샌드(&) 등 특수문자가 포함된 값은 따옴표로 감싸세요. url: "http://example.com:8080"
Q: 여러 줄 문자열은 어떻게 작성하나요?
A: 파이프(|)는 줄바꿈을 유지하고, 꺾쇠(>)는 줄바꿈을 공백으로 변환합니다. |-, |+, >-, >+ 등으로 마지막 줄바꿈 처리를 제어할 수 있습니다.
Q: JSON에서 null인 값은 YAML에서 어떻게 되나요?
A: YAML에서 null은 null, ~, 또는 빈 값으로 표현할 수 있습니다. 예: value: null, value: ~, value:
YAML 작업 팁
- 유효성 검사: 변환 전 YAML Lint로 문법 오류를 확인하세요.
- 편집기 설정: VSCode에서 YAML 확장을 설치하면 자동 완성과 오류 표시를 지원합니다.
- 들여쓰기: 편집기 설정에서 탭을 2-스페이스로 변환하세요.
- 스키마 활용: JSON Schema를 사용하면 YAML 유효성 검사가 가능합니다.
- 버전 관리: .editorconfig로 팀 전체의 YAML 스타일을 통일하세요.
관련 도구
- YAML Lint: YAML 문법 검사기
- JSON Formatter: JSON 정렬 및 포맷팅
- JSON Schema: JSON/YAML 유효성 검사 스키마
- yq: 커맨드라인 YAML 프로세서 (jq와 유사)
- Kubeval: Kubernetes YAML 검증 도구