JSON to YAML 변환기

JSON을 YAML 형식으로 변환

예시 시도

JSON 입력

YAML 출력

로컬에서 실행 · 시크릿 붙여넣기 안전
YAML이 여기에 표시됩니다…

JSON to YAML 변환이란?

JSON to YAML 변환은 JavaScript Object Notation 데이터를 YAML Ain't Markup Language로 변환하는 작업입니다. 두 형식은 동일한 데이터 구조(객체, 배열, 문자열, 숫자, 불리언, null)를 표현하지만 문법이 다릅니다. JSON은 중괄호, 대괄호, 쉼표를 사용하고, YAML은 들여쓰기와 줄 바꿈을 사용해 일반 텍스트에 가까운 출력을 생성합니다. XML과 달리 두 형식 모두 스키마가 필요하지 않습니다.

YAML은 사람이 읽기 쉬운 데이터 직렬화 형식으로 설계되었습니다. Kubernetes 매니페스트, Docker Compose 파일, Ansible 플레이북, GitHub Actions 워크플로, 그리고 많은 CI/CD 시스템의 기본 설정 언어입니다. 소스 데이터가 JSON이고 대상 시스템이 YAML을 요구할 때, 데이터 손실 없이 모든 값, 타입, 중첩 구조를 정확하게 보존하는 변환기가 필요합니다.

API 응답이나 내보낸 데이터를 JSON으로 받아 YAML 설정 파일에 붙여 넣어야 할 때 온라인 변환기가 유용합니다. 모든 표준 JSON 타입에 대해 변환은 무손실입니다. 문자열, 숫자, 불리언, null, 배열, 객체 모두 YAML 동등 표현으로 직접 매핑됩니다. 콜론이나 특수 문자가 포함된 값은 자동으로 따옴표 처리되어 유효한 YAML이 출력됩니다.

JSON을 YAML로 변환하는 이유

YAML은 설정 파일의 표준이고, JSON은 API가 반환하는 형식입니다. 두 형식 간 변환을 통해 데이터를 수동으로 다시 작성하지 않고 각 작업에 적합한 형식을 사용할 수 있습니다.

즉시 변환
JSON을 붙여 넣으면 즉시 YAML 출력이 나타납니다. 서버 처리 대기 없음, 파일 업로드 없음, 요청 제한 없음.
🔒
개인 정보 우선 처리
데이터는 브라우저 밖으로 나가지 않습니다. 변환은 기기의 JavaScript에서 완전히 실행되므로 자격 증명, 토큰, API 키가 외부로 전송되지 않습니다.
🔀
모든 JSON 구조 지원
깊이 중첩된 객체, 큰 배열, 혼합 타입, 유니코드 문자열, 특수 문자 모두 정확하게 변환됩니다. 전체 데이터 구조가 보존됩니다.
📋
계정 또는 설치 불필요
페이지를 열고 바로 변환을 시작하세요. 회원 가입, 확장 프로그램, CLI 도구 설치가 필요 없습니다. 브라우저가 있는 모든 기기에서 작동합니다.

JSON to YAML 활용 사례

Kubernetes & Docker Compose
API 응답과 내보낸 설정은 JSON 형태로 오는 경우가 많습니다. 이를 YAML로 변환해 Kubernetes 매니페스트, Helm 차트, Docker Compose 파일에 바로 사용하세요.
CI/CD 파이프라인 설정
GitHub Actions, GitLab CI, CircleCI, Azure Pipelines 모두 YAML을 사용합니다. JSON으로 파이프라인 설정을 프로그래밍 방식으로 생성할 때는 커밋 전에 출력을 변환하세요.
Ansible 플레이북
Ansible은 플레이북과 인벤토리 파일에 YAML을 사용합니다. 클라우드 API에서 내보낸 JSON 인벤토리를 Ansible이 요구하는 YAML 형식으로 변환하세요.
API 응답 검사
REST API는 JSON을 반환합니다. 중첩된 응답을 YAML로 변환하면 데이터 계층 구조가 한눈에 보여 괄호가 많은 JSON보다 빠르게 파악할 수 있습니다.
설정 파일 마이그레이션
JSON 기반 설정(예: tsconfig.json, package.json 내보내기)에서 YAML 기반 도구로 마이그레이션할 때, 값을 다시 입력하는 대신 일괄 변환하세요.
학습 및 문서화
개발자와 기술 문서 작성자가 JSON/YAML을 나란히 놓고 데이터 구조가 형식 간에 어떻게 매핑되는지 이해하는 데 활용합니다. 변환기는 즉각적이고 정확한 예시를 제공합니다.

JSON vs YAML 비교

JSON과 YAML은 동일한 데이터를 표현할 수 있지만, 문법과 기능에서 특정 사용 사례에 중요한 차이가 있습니다.

특징JSONYAML
SyntaxCurly braces, square brackets, colons, commasIndentation-based, colons, dashes
ReadabilityModerate — nested brackets become denseHigh — visual hierarchy from indentation
CommentsNot allowed (RFC 8259)Supported with #
Multi-line stringsEscape sequences only (\n)Block scalars with | or >
Data typesstring, number, boolean, null, object, arraySame plus date, timestamp, binary
File sizeSlightly larger (brackets + quotes)Slightly smaller (no brackets)
Trailing commasNot allowedNot applicable (no commas)
SpecRFC 8259 / ECMA-404YAML 1.2 (yaml.org)

변환 후 YAML 주의 사항

YAML에는 JSON에서 넘어온 개발자를 놀라게 하는 파싱 규칙이 있습니다. 다음 네 가지 문제가 변환된 출력 작업 시 가장 많은 버그를 유발합니다.

따옴표 없는 yes/no는 불리언으로 처리됨
YAML 1.1 파서는 yes, no, on, off, true, false를 불리언으로 처리합니다. JSON에 문자열 값 "yes" 또는 "no"가 있으면, YAML 출력에서 따옴표가 없어지고 구형 도구에서 불리언으로 파싱될 수 있습니다. YAML 1.2는 이를 true/false로만 제한합니다.
들여쓰기 오류는 파싱 실패를 유발함
YAML은 들여쓰기로 구조를 정의합니다. 공백 하나가 더 있거나 없으면 의미가 바뀌거나 파싱 오류가 발생할 수 있습니다. JSON에서는 잘못된 위치의 쉼표가 명확한 오류를 주지만, YAML 들여쓰기 실수는 데이터 계층 구조를 조용히 변경할 수 있습니다.
값의 콜론은 따옴표 처리 필요
공백 앞의 콜론(": ")은 YAML의 키-값 구분자입니다. JSON 문자열에 해당 패턴(예: "http://example.com")이 포함되면 YAML 출력에서 값이 따옴표로 감싸져야 합니다. 대부분의 변환기는 이를 자동으로 처리합니다.
다중 문서 파일
YAML은 ---로 구분된 여러 문서를 하나의 파일에 담을 수 있습니다. JSON에는 이에 해당하는 기능이 없습니다. JSON 설정 배열을 변환할 때 각 요소가 별도의 YAML 문서가 될 수도 있고 배열 항목으로 유지될 수도 있습니다. 대상 도구가 어떤 형식을 기대하는지 확인하세요.

코드 예제

대부분의 언어에서 JSON을 YAML로 프로그래밍 방식으로 변환하려면 YAML 직렬화 라이브러리가 필요합니다. 표준 라이브러리는 JSON 파싱을 처리하고, YAML 출력에는 추가 패키지가 필요합니다.

JavaScript (Node.js)
import YAML from 'js-yaml'

const json = '{"host":"localhost","port":3000,"debug":true}'
const obj = JSON.parse(json)
const yamlStr = YAML.dump(obj, { indent: 2 })
console.log(yamlStr)
// → host: localhost
// → port: 3000
// → debug: true
Python
import json, yaml

json_str = '{"host": "localhost", "port": 3000, "debug": true}'
data = json.loads(json_str)
yaml_str = yaml.dump(data, default_flow_style=False, sort_keys=False)
print(yaml_str)
# → host: localhost
# → port: 3000
# → debug: true
Go
package main

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

func main() {
    jsonStr := `{"host":"localhost","port":3000,"debug":true}`
    var data map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)

    yamlBytes, _ := yaml.Marshal(data)
    fmt.Println(string(yamlBytes))
    // → debug: true
    // → host: localhost
    // → port: 3000
}
CLI (yq / jq + Python)
# Using yq (https://github.com/mikefarah/yq)
echo '{"host":"localhost","port":3000}' | yq -P
# → host: localhost
# → port: 3000

# Using Python one-liner
echo '{"host":"localhost","port":3000}' | python3 -c "import sys,json,yaml; print(yaml.dump(json.load(sys.stdin), default_flow_style=False))"

자주 묻는 질문

JSON to YAML 변환은 무손실인가요?
네, 모든 표준 JSON 타입에 대해 무손실입니다. 문자열, 숫자, 불리언, null, 배열, 객체 모두 YAML 동등 표현이 있습니다. 변환된 YAML을 다시 파싱하면 동일한 데이터가 생성됩니다. 유일한 차이는 형식입니다. YAML은 중괄호 대신 들여쓰기를 사용합니다.
YAML이 JSON의 모든 것을 표현할 수 있나요?
네. YAML은 JSON의 상위 집합입니다(YAML 1.2 기준). 유효한 JSON 문서는 모두 유효한 YAML이기도 합니다. YAML은 JSON에 없는 기능을 추가합니다. 주석, 앵커/별칭, 여러 줄 문자열, 날짜 등 추가 스칼라 타입이 포함됩니다.
Kubernetes와 Docker가 JSON 대신 YAML을 사용하는 이유는?
YAML은 인프라 설정 문서화에 필수적인 주석을 지원합니다. 또한 들여쓰기가 괄호 노이즈를 대체하기 때문에 깊이 중첩된 구조에서 가독성이 더 높습니다. Kubernetes는 JSON과 YAML을 모두 허용하지만, 커뮤니티와 공식 문서는 모두 YAML을 사용합니다.
대용량 JSON 파일은 어떻게 처리하나요?
이 변환기는 브라우저에서 실행되므로 수 메가바이트 크기의 파일도 문제없이 처리할 수 있습니다. 매우 큰 파일(50MB 이상)의 경우 yq 같은 CLI 도구나 PyYAML 라이브러리를 사용하는 Python 스크립트를 활용하세요. 이 도구들은 데이터를 스트림으로 처리해 메모리를 덜 사용합니다.
변환기가 키 순서를 유지하나요?
네. 변환기는 JSON 입력에 나타나는 순서와 동일하게 YAML 키를 출력합니다. JSON 객체는 사양상 기술적으로 순서가 없지만, 실제로 파서는 삽입 순서를 보존하며 이 도구도 YAML 출력에서 해당 순서를 유지합니다.
출력은 어떤 YAML 버전을 따르나요?
출력은 YAML 1.2 규칙을 따릅니다. true와 false만 불리언 리터럴로 처리됩니다(yes/no/on/off 제외). 오해의 소지가 있는 문자열은 파싱 모호성을 방지하기 위해 자동으로 따옴표 처리됩니다.
이 도구에 API 키와 토큰을 붙여 넣어도 안전한가요?
네. 변환은 JavaScript를 사용해 브라우저에서 완전히 실행됩니다. 어떤 서버에도 데이터가 전송되지 않습니다. 브라우저의 네트워크 검사기를 열어 변환 중에 요청이 발생하지 않는 것을 직접 확인할 수 있습니다.