🔄 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 비교

특성YAMLJSON
가독성매우 높음 (사람 친화적)좋음 (기계 친화적)
주석지원 (#으로 시작)미지원
복잡성높음 (다양한 기능)낮음 (단순한 규칙)
파일 크기작음 (괄호/따옴표 생략)상대적으로 큼
파싱 속도느림빠름
주요 사용처설정 파일, CI/CD, KubernetesAPI, 웹 통신, 데이터 저장
들여쓰기필수 (의미 있음)선택 (가독성용)

YAML이 주로 사용되는 곳

🐳
Docker Compose

컨테이너 오케스트레이션 설정

docker-compose.yml
☸️
Kubernetes

클러스터 리소스 정의

deployment.yaml, service.yaml
🔄
CI/CD

파이프라인 설정

.github/workflows/*.yml
🔧
Ansible

인프라 자동화 플레이북

playbook.yml
📝
Spring Boot

애플리케이션 설정

application.yml
📚
OpenAPI/Swagger

API 문서 정의

openapi.yaml

YAML 문법 가이드

기본 키-값

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 스타일을 통일하세요.

관련 도구