JSON / YAML 변환/ JSON ↔ YAML

JSON과 YAML 양방향 실시간 변환 — 방향 즉시 전환, 사용자 정의 JSON 들여쓰기 지원.

JSON
YAML

이 도구가 도움이 되었나요?

코드 예제

JavaScript (js-yaml)
// npm install js-yaml
import yaml from 'js-yaml';

// JSON → YAML
const obj = { name: 'Alice', scores: [100, 95] };
const yamlStr = yaml.dump(obj, { indent: 2 });
// name: Alice
// scores:
//   - 100
//   - 95

// YAML → JSON
const yamlInput = `
name: Alice
scores:
  - 100
  - 95
`;
const parsed = yaml.load(yamlInput);
JSON.stringify(parsed, null, 2);
// { "name": "Alice", "scores": [100, 95] }
Python (PyYAML)
# pip install pyyaml
import yaml, json

# JSON → YAML
data = {"name": "Alice", "scores": [100, 95]}
yaml_str = yaml.dump(data, default_flow_style=False,
                      allow_unicode=True, indent=2)
# name: Alice
// scores:
// - 100
// - 95

# YAML → JSON
with open('config.yaml') as f:
    data = yaml.safe_load(f)  # use safe_load!
json_str = json.dumps(data, indent=2, ensure_ascii=False)

# Stream large files
for doc in yaml.safe_load_all(open('multi.yaml')):
    print(json.dumps(doc))
Go
// go get gopkg.in/yaml.v3
import (
  "encoding/json"
  "gopkg.in/yaml.v3"
)

// YAML → JSON
yamlStr := []byte("name: Alice\nage: 30")
var data map[string]interface{}
yaml.Unmarshal(yamlStr, &data)
jsonBytes, _ := json.MarshalIndent(data, "", "  ")

// JSON → YAML
jsonStr := []byte(`{"name":"Alice","age":30}`)
var obj interface{}
json.Unmarshal(jsonStr, &obj)
yamlBytes, _ := yaml.Marshal(obj)
// age: 30
// name: Alice
CLI Tools
# yq: YAML/JSON Swiss Army knife
# brew install yq  /  apt install yq

# YAML → JSON
yq -o=json config.yaml

# JSON → YAML
yq -P config.json

# In-place conversion
yq -i -o=yaml config.json

# Python one-liner: JSON → YAML
python3 -c "
import sys, json, yaml
print(yaml.dump(json.load(sys.stdin),
      default_flow_style=False, allow_unicode=True))
" < config.json

자주 묻는 질문

YAML과 JSON의 관계는?
YAML은 JSON의 상위집합입니다 — 유효한 JSON은 유효한 YAML이기도 합니다. YAML은 JSON에 주석(#), 여러 줄 문자열, 앵커와 참조, 유연한 날짜/시간 유형, 따옴표 없는 문자열을 추가합니다.
JSON 대신 YAML을 사용해야 하는 경우는?
YAML 사용场景: CI/CD 설정, Docker Compose, Kubernetes 매니페스트, 사람이 편집/유지보수하는 설정 파일, 여러 줄 텍스트가 포함된 콘텐츠. JSON 사용场景: API 데이터 교환, 엄격한 타입 시스템이 필요한 경우.
YAML의 들여쓰기 규칙은?
YAML은 스페이스(탭 금지)로 들여쓰기하여 계층 관계를 표현합니다. 같은 레벨의 모든 키는 동일한 들여쓰기를 가져야 합니다. YAML은 들여쓰기 오류에 매우 민감합니다.
YAML의 여러 줄 문자열 작성법은?
두 가지 블록 스타일: 리터럴 블록(|)은 줄바꿈을 보존합니다. 폴드 블록(>)은 단일 줄바꿈을 공백으로 바꿉니다. 플로우 스타일: 작은따옴표(이스케이프 처리 없음), 큰따옴표(이스케이프 처리 있음).
Node.js에서 YAML을 파싱하려면?
js-yaml 라이브러리 사용 (npm install js-yaml): const yaml = require('js-yaml'); const obj = yaml.load(yamlString); const str = yaml.dump(obj);. 보안을 위해 yaml.safeLoad 사용을 권장합니다.
변환 시 일반적인 호환성 문제는?
1) YAML의 주석(#)은 JSON으로 변환할 수 없습니다. 2) 앵커(&)와 별칭(*)은 JSON에서 전체 객체로 확장됩니다. 3) 날짜 값은 Date 객체로 파싱됩니다. 4) 정수는 숫자가 되며, 매우 큰 정수는 정밀도가 손실될 수 있습니다.