JSON to YAML 변환기

JSON을 YAML로 브라우저 안에서만 변환하는 무료 도구입니다. 업로드와 가입이 필요 없으며, 키 순서를 유지한 채 줄 번호와 함께 문법 오류를 표시합니다. Kubernetes / OpenAPI / Docker Compose 설정 파일 작성에도 사용할 수 있습니다.

브라우저 안에서만 처리
입력 JSONJSON
JSON 문법 오류는 대략적인 줄 번호와 함께 표시합니다.
5 lines · 85 bytes
출력 YAMLYAML
아직 실행하지 않았습니다.
0 lines · 0 bytes

JSON to YAML 변환기 소개

주요 용도

Kubernetes 매니페스트, Docker Compose, GitHub Actions 워크플로, Ansible 플레이북, Helm의 values.yaml 등 JSON으로 작성된 설정이나 API 응답을 YAML 형식의 설정 파일로 옮기고 싶을 때 사용할 수 있습니다. API에서 받은 JSON을 그대로 설정으로 운용하고 싶을 때 붙여넣기만 하면 읽기 쉬운 YAML로 변환됩니다.

변환 예시

입력 예: { "name": "formatarc", "features": ["json", "yaml"] } 을 붙여넣으면, 출력은 name: formatarc / features: ["json", "yaml"] 처럼 들여쓰기 기반의 YAML로 정리됩니다. 따옴표가 필요 없어지고 배열과 중첩 구조도 자연스러운 들여쓰기로 표현됩니다.

JSON과 YAML의 주요 차이

YAML은 들여쓰기로 계층을 표현하므로 중괄호가 필요 없고, 문자열에 따옴표도 기본적으로 필요하지 않습니다. YAML은 주석(# 줄)을 쓸 수 있지만 JSON은 사양상 쓸 수 없으므로, JSON 입력에 주석이 포함되어 있으면 변환 단계에서 제외됩니다. 이 도구는 키 순서를 입력 그대로 유지한 채 YAML로 출력합니다.

JSON과 YAML 한눈에 비교
관점JSONYAML
구조중괄호·대괄호들여쓰기
문자열항상 따옴표따옴표 기본 불필요
주석불가# 으로 작성 가능
키 순서이 도구에서 유지이 도구에서 유지
주요 용도API·데이터 교환설정 파일·CI/CD

OpenAPI / Swagger 사양의 JSON을 YAML로 변환

OpenAPI 3.0 / 3.1이나 Swagger 2.0 사양은 JSON으로 작성되거나 내보내지는 경우가 많지만, 에디터·린트 도구·CI에서는 YAML이 선호됩니다. JSON 사양을 그대로 붙여넣으면 $ref 참조, 경로 키, 컴포넌트 순서를 깨뜨리지 않고 YAML로 변환합니다. 이 도구는 키를 알파벳순으로 재정렬하지 않으므로 사양 구조가 손상되지 않습니다. 일반 정렬 도구에서 발생하는 스키마 손상을 피할 수 있어 Redoc, Swagger UI, Spectral 린트에 바로 사용할 수 있습니다.

변환 과정

먼저 JSON으로 올바르게 해석한 뒤, 그 객체를 YAML로 다시 출력합니다. 입력이 잘못된 경우 JSON 단계에서 오류를 반환하고 대략적인 줄 번호를 표시합니다. 서버로는 일절 전송하지 않으며 모든 처리가 브라우저 안에서 끝납니다.

이 도구가 유지하는 것과 유지할 수 없는 것

키 순서, 중첩 구조, 값의 타입(문자열·숫자·불리언·null)은 그대로 유지됩니다. JSON에는 주석이 없으므로 YAML 출력에도 주석은 포함되지 않습니다. 출력 스타일은 가독성을 우선한 블록 형식을 기본으로 합니다.

CLI 원라이너: yq / Python / Node.js

터미널을 선호하거나 CI/CD 파이프라인에 넣고 싶다면 다음 원라이너로도 키 순서를 유지한 동일한 블록 형식 YAML을 얻을 수 있습니다.

yq (단일 Go 바이너리)
yq -P -o=yaml '.' input.json > output.yaml
Python (PyYAML)
python -c "import json,sys,yaml; yaml.safe_dump(json.load(sys.stdin), sys.stdout, sort_keys=False)" < input.json
Node.js (js-yaml)
node -e "const y=require('js-yaml'),f=require('fs'); console.log(y.dump(JSON.parse(f.readFileSync(0,'utf8'))))" < input.json

관련 변환기