Skip to content

JSON to YAML 변환기 (JSON to YAML Converter)

JSON을 붙여넣으면 즉시 YAML로 변환됩니다. 브라우저에서 실시간 변환, K8s/Compose 지원, 2/4칸 들여쓰기, Norway 안전 자동 인용, 100% 개인 정보 보호.

트래킹 없음 브라우저 실행 무료
옵션 · 2칸 · 자동 · 블록
들여쓰기
스타일
0
YAML 출력
0
YAML 1.2 명세 출력 및 Norway 문제 처리 정확성에 대한 RFC 8259 준수 여부 검토 완료 — Go Tools Engineering Team · May 4, 2026

YAML이란 무엇이며 JSON에서 왜 변환하나요?

YAML(YAML Ain't Markup Language)은 사람이 읽을 수 있는 데이터 직렬화 형식으로, 설정 파일, 코드형 인프라, 사람이 작성하고 기계가 읽는 모든 곳을 위해 설계되었습니다. 들여쓰기 기반 구문은 중괄호나 대괄호가 필요 없어 복잡한 중첩 구조를 JSON보다 훨씬 읽기 쉽게 만듭니다. Kubernetes, Helm, Ansible, Docker Compose, GitHub Actions, CircleCI, 사실상 모든 클라우드 네이티브 도구가 YAML을 기본 설정 형식으로 사용합니다. 따라서 JSON을 YAML로 변환하는 것은 DevOps와 백엔드 개발에서 가장 일반적인 작업 중 하나입니다 — API에서 JSON 형식으로 리소스 정의를 받은 후 버전 관리에 커밋할 YAML 매니페스트가 필요합니다.

일반적인 온라인 변환기와 비교할 때 이 도구에는 네 가지 중요한 차별점이 있습니다:

**1. Norway 문제 — 자동 안전 인용.** JSON을 YAML로 변환할 때 가장 큰 함정은 YAML Norway 문제입니다. YAML 1.1(구버전 Kubernetes, PyYAML, Ansible, Ruby의 Psych를 포함한 수많은 프로덕션 파서가 여전히 사용)에서 단순 문자열 yes, no, on, off, y, n은 불리언 true/false로 파싱됩니다. 이 문제는 Norway의 ISO 국가 코드("NO" → false)에서 유명해졌으며 Kubernetes 설정에서 실제 프로덕션 장애를 일으켰습니다. YAML 1.2에서 수정되었지만 파서가 아직 1.2가 아닐 수 있습니다. 이 도구의 기본 자동 인용 모드는 YAML 1.1 스키마와 함께 eemeli/yaml 라이브러리를 사용하여 Norway 문제 문자열에 자동으로 인용 부호를 추가합니다. 자세한 내용은 YAML Norway 문제와 JSON-YAML 차이점을 참조하세요.

**2. 키 순서 유지.** 일부 변환기가 키를 알파벳순으로 정렬하는 것과 달리, 이 도구는 JSON의 원래 키 삽입 순서를 유지합니다 — 모든 현대 자바스크립트 엔진에서 JSON.parse()의 동작과 일치합니다. 이는 apiVersion과 kind가 관례적으로 먼저 나와야 하는 Kubernetes 매니페스트, info가 paths 앞에 오는 OpenAPI 명세, 가독성이나 diff에 필드 순서가 중요한 모든 설정에 중요합니다.

**3. 큰 숫자 정밀도 주의 사항.** 2^53 - 1(9007199254740991)보다 큰 JSON 숫자는 자바스크립트의 IEEE 754 배정밀도 부동소수점으로 정확히 표현할 수 없습니다. JSON.parse()가 큰 정수(서버에서 64비트 정수인 Kubernetes resourceVersion 필드 등)를 읽으면 자동으로 잘립니다. 이것은 이 도구를 포함한 모든 브라우저 기반 JSON 도구에 영향을 미치는 근본적인 브라우저 자바스크립트 한계입니다. 안전한 해결 방법은 변환 전에 큰 정수가 JSON에 문자열로 저장되어 있는지 확인하는 것입니다.

**4. 100% 브라우저 기반 개인 정보 보호.** API 키, 데이터베이스 자격 증명, 내부 서비스 설정, 프로덕션 시크릿이 포함되는 JSON 데이터가 브라우저를 벗어나지 않습니다. 어떤 서버로도 데이터가 전송되지 않습니다. 브라우저의 네트워크 탭에서 확인할 수 있습니다. 역방향 도구는 YAML to JSON 변환기를 참조하고, JSON을 변환하기 전에 유효성 검사와 포매팅이 필요하다면 JSON 포맷터를 사용하세요.

YAML의 사람이 읽기 쉬운 특성에는 더 많은 파싱 엣지 케이스가 따릅니다. Norway 문제 외에도 YAML에는 8진수 숫자 특이 사항(YAML 1.1에서 0777은 511로 파싱), 여러 줄 문자열 구문(| 리터럴, > 폴딩), 앵커와 별칭 참조(&anchor와 *alias), 다중 문서 지원(--- 구분자)이 있습니다. JSON에는 이러한 복잡성이 없습니다 — 여섯 가지 데이터 타입만 있는 엄격하고 최소한의 형식입니다. 기계 간 데이터 교환에는 JSON이 거의 항상 더 나은 선택입니다. 사람이 편집하는 설정 파일(가독성과 주석이 중요)에는 YAML이 더 적합합니다. 이 변환기는 두 세계의 장점을 모두 제공합니다: JSON으로 프로그래밍 방식으로 작업하고, 인프라에는 YAML로 변환하세요.

// Convert JSON to YAML in Node.js using the eemeli/yaml library
import { Document } from 'yaml';

const data = JSON.parse('{"apiVersion":"apps/v1","kind":"Deployment"}');

// version: '1.1' ensures Norway-problem strings (yes/no/on/off/y/n)
// are automatically quoted in the output for YAML 1.1 parser safety
const doc = new Document(data, { version: '1.1' });

const yamlString = doc.toString({
  indent: 2,
  lineWidth: 0,         // disable line wrapping
  defaultStringType: 'PLAIN',   // Auto mode: only quote when needed
});

console.log(yamlString);
// apiVersion: apps/v1
// kind: Deployment

주요 기능

실시간 변환

JSON을 입력하거나 붙여넣으면 YAML 출력이 즉시 업데이트됩니다 — 변환 버튼이 필요 없습니다. 대용량 입력(>200KB)은 자동으로 수동 모드로 전환하여 브라우저 응답성을 유지합니다.

2칸 또는 4칸 들여쓰기

2칸(Kubernetes, Docker Compose, GitHub Actions 표준)과 4칸(Ansible 관례) 들여쓰기를 전환합니다. YAML은 탭을 금지합니다 — 이 도구는 항상 공백을 사용합니다.

자동 안전 인용(Norway 안전)

기본 자동 모드는 YAML 1.1 스키마를 사용하여 "no", "yes", "on", "off", "y", "n" 같은 문자열을 YAML 1.1 파서에서 불리언으로 잘못 읽힐 경우 자동으로 인용하여 프로덕션 설정 오류를 방지합니다.

블록 및 Flow 스타일

블록 스타일은 매니페스트와 설정 파일에 이상적인 들여쓰기된 사람 읽기 쉬운 YAML을 생성합니다. Flow 스타일은 JSON과 유사한 컴팩트한 인라인 YAML을 생성합니다 — 문서 스니펫이나 최소 출력을 선호하는 도구에 유용합니다.

100% 브라우저 기반 개인 정보 보호

모든 변환은 자바스크립트를 사용하여 브라우저에서 로컬로 실행됩니다. API 키, 자격 증명, 프로덕션 설정을 포함한 JSON 데이터는 어떤 서버로도 전송되지 않고, 기록되지 않으며, 저장되지 않습니다.

K8s, Compose, Terraform 파일 지원

실제 DevOps 사용 사례에 최적화: Kubernetes 매니페스트, Docker Compose 스택, Helm 차트 values, GitHub Actions 워크플로, OpenAPI 명세, Terraform JSON 플랜 출력 — 각각에 대한 예시가 제공됩니다.

예시

Kubernetes Deployment

{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"my-app","namespace":"production","labels":{"app":"my-app","version":"1.0.0"}},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"my-app"}},"template":{"metadata":{"labels":{"app":"my-app"}},"spec":{"containers":[{"name":"my-app","image":"my-app:1.0.0","ports":[{"containerPort":8080}],"resources":{"requests":{"memory":"64Mi","cpu":"250m"},"limits":{"memory":"128Mi","cpu":"500m"}}}]}}}}

JSON API 응답 형식의 Kubernetes Deployment 매니페스트를 YAML로 변환하여 kubectl apply -f로 적용합니다

Docker Compose

{"version":"3.9","services":{"web":{"image":"nginx:1.25-alpine","ports":["80:80","443:443"],"environment":{"NGINX_HOST":"example.com","NGINX_PORT":"80"},"depends_on":["db"],"restart":"unless-stopped"},"db":{"image":"postgres:16-alpine","environment":{"POSTGRES_DB":"mydb","POSTGRES_USER":"admin","POSTGRES_PASSWORD":"secret"},"volumes":["pgdata:/var/lib/postgresql/data"]}},"volumes":{"pgdata":{}}}

Docker Compose 서비스 정의를 JSON에서 docker compose up에 필요한 YAML 형식으로 변환합니다

GitHub Actions 워크플로

{"name":"CI","on":{"push":{"branches":["main"]},"pull_request":{"branches":["main"]}},"jobs":{"build":{"runs-on":"ubuntu-latest","steps":[{"uses":"actions/checkout@v4"},{"name":"Set up Node.js","uses":"actions/setup-node@v4","with":{"node-version":"20","cache":"pnpm"}},{"name":"Install dependencies","run":"pnpm install --frozen-lockfile"},{"name":"Run tests","run":"pnpm test"}]}}}

GitHub Actions CI 워크플로 정의를 JSON에서 YAML로 변환하여 .github/workflows/에 커밋합니다

OpenAPI 명세

{"openapi":"3.0.3","info":{"title":"User API","version":"1.0.0","description":"Manage application users"},"paths":{"/users":{"get":{"summary":"List users","operationId":"listUsers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}}}}},"/users/{id}":{"get":{"summary":"Get user","operationId":"getUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"}}}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","format":"email"}}}}}}

OpenAPI 3.0 명세를 JSON에서 YAML로 변환합니다 — Swagger UI, Redoc, 대부분의 API 도구에서 선호하는 형식입니다

package.json

{"name":"my-app","version":"1.0.0","description":"A sample Node.js application","private":true,"scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","test":"vitest","lint":"eslint . --ext .ts,.tsx"},"dependencies":{"react":"^18.3.0","react-dom":"^18.3.0"},"devDependencies":{"typescript":"^5.4.0","vite":"^5.2.0","vitest":"^1.5.0","eslint":"^8.57.0","@types/react":"^18.3.0"},"engines":{"node":">=20.0.0","pnpm":">=9.0.0"}}

일반적인 Node.js package.json을 YAML로 변환합니다 — YAML을 선호하는 프로젝트 설정 도구로 마이그레이션할 때 유용합니다

Terraform JSON 플랜

{"format_version":"1.0","terraform_version":"1.7.4","variables":{"region":{"value":"us-east-1"}},"planned_values":{"root_module":{"resources":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","values":{"bucket":"my-app-assets","force_destroy":false,"tags":{"Environment":"production","ManagedBy":"terraform"}}}]}},"resource_changes":[{"address":"aws_s3_bucket.main","mode":"managed","type":"aws_s3_bucket","name":"main","change":{"actions":["create"],"before":null,"after":{"bucket":"my-app-assets","force_destroy":false}}}]}

Terraform JSON 플랜 출력을 YAML로 변환하여 사람이 검토하거나 GitOps 감사 및 CI/CD 파이프라인에서 활용합니다 — 대부분의 변환기가 지원하지 않는 기능입니다

사용 방법

  1. 1

    JSON 데이터 붙여넣기

    위 입력 필드에 JSON 데이터를 입력하거나 붙여넣으세요. '예시 불러오기'를 클릭하여 Kubernetes Deployment, Docker Compose 파일, Terraform 플랜 같은 샘플을 사용해 볼 수도 있습니다.

  2. 2

    실시간 YAML 출력 확인

    YAML이 출력 패널에 즉시 표시됩니다. 대상 도구의 요구 사항에 맞게 옵션(들여쓰기 2/4칸, 인용 자동/큰따옴표/작은따옴표, 스타일 블록/Flow)을 조정하세요.

  3. 3

    복사 또는 다운로드

    복사를 클릭하여 YAML을 클립보드에 저장하거나 다운로드를 클릭하여 .yaml 파일로 저장하면 kubectl apply, docker compose up, 기타 도구에서 바로 사용할 수 있습니다.

일반적인 변환 함정

후행 쉼표

JSON은 객체나 배열의 마지막 요소 뒤에 쉼표를 허용하지 않습니다. 후행 쉼표를 허용하는 자바스크립트 코드에서 복사할 때 매우 자주 발생합니다. 변환 전에 마지막 쉼표를 제거하세요.

✗ 오류
{"name": "Alice", "role": "admin",}
✓ 정상
{"name": "Alice", "role": "admin"}

작은따옴표

JSON은 모든 문자열 값과 객체 키에 큰따옴표를 요구합니다. 작은따옴표는 자바스크립트와 Python에서는 유효하지만 JSON에서는 구문 오류입니다.

✗ 오류
{'name': 'Alice', 'active': true}
✓ 정상
{"name": "Alice", "active": true}

인용되지 않은 키

모든 JSON 객체 키는 큰따옴표로 감싸야 합니다. 인용되지 않은 키는 자바스크립트 객체 리터럴에서는 유효하지만 엄격한 JSON에서는 파싱 오류를 일으킵니다.

✗ 오류
{name: "Alice", role: "admin"}
✓ 정상
{"name": "Alice", "role": "admin"}

주석 미지원

표준 JSON은 어떤 형태의 주석도 지원하지 않습니다 — //, /* */, # 모두 해당됩니다. 설정에 주석이 필요하다면 YAML(# 주석 지원)이나 JSONC(주석 포함 JSON, VS Code에서 사용)를 사용하세요. JSON 데이터로 사용하기 전에 모든 주석을 제거하세요.

✗ 오류
{"port": 8080 // HTTP port}
✓ 정상
{"port": 8080}

YAML Norway 문제(자동 모드에서 자동 처리됨)

YAML 1.1 파서(Kubernetes, Ansible, PyYAML, Ruby Psych에서 사용)에서 단순 문자열 yes, no, on, off, y, n은 문자열 대신 불리언 true/false로 파싱됩니다. 이 도구의 자동 모드는 YAML 출력에서 이러한 값에 자동으로 인용 부호를 추가하여 YAML 1.1 또는 1.2 파서에서 안전하게 왕복 변환을 보장합니다. 큰따옴표 또는 작은따옴표 모드를 선택하면 모든 문자열이 명시적으로 인용되어 문제를 방지하지만 자동 모드의 출력이 더 자연스럽습니다.

✗ 오류
# JSON input: {"country": "no", "enabled": "yes"}
# YAML without quoting (dangerous):
country: no
enabled: yes
# YAML 1.1 parser reads: country=false, enabled=true
✓ 정상
# YAML with Auto quoting (safe):
country: 'no'
enabled: 'yes'
# YAML 1.1 parser reads: country="no", enabled="yes"

큰 정수 정밀도 손실

자바스크립트는 2^53 - 1(9007199254740991) 이하의 정수만 정확히 표현할 수 있습니다. 이보다 큰 JSON 정수(서버에서 int64인 Kubernetes resourceVersion 필드 등)는 JSON.parse()로 파싱할 때 자동으로 반올림되며, 잘린 숫자가 YAML 출력에 나타납니다. 이것은 브라우저 기반의 모든 JSON 도구에 영향을 미치는 근본적인 한계입니다. 안전한 해결 방법은 변환 전에 큰 정수를 JSON에 문자열로 저장하는 것입니다.

✗ 오류
// JSON input (resourceVersion is int64 on K8s server)
{"resourceVersion": 9007199254740993}
// JavaScript reads it as: 9007199254740992 (precision lost)
// YAML output will contain the wrong number
✓ 정상
// Store large integers as strings to preserve precision
{"resourceVersion": "9007199254740993"}
// YAML output: resourceVersion: '9007199254740993' (exact)

주요 사용 사례

Kubernetes 매니페스트
kubectl get -o json 또는 Kubernetes API에서 받은 JSON API 응답을 GitOps 워크플로, Kustomize 오버레이, kubectl apply -f 배포용 YAML 매니페스트로 변환합니다.
Docker Compose 파일
docker inspect JSON 출력 또는 프로그래밍 방식으로 생성된 서비스 설정을 docker compose up 및 Docker Stack 배포와 호환되는 docker-compose.yaml 파일로 변환합니다.
Helm 차트 Values
JSON 설정 내보내기를 Helm 차트 배포용 YAML values 파일로 변환하여 깔끔한 YAML 구문으로 버전 관리된 인프라 설정을 구현합니다.
GitHub Actions 워크플로
JSON으로 GitHub Actions 워크플로 정의를 프로그래밍 방식으로 구축한 후 GitHub Actions 러너가 요구하는 .github/workflows/*.yaml 형식으로 변환합니다.
OpenAPI 명세
많은 프레임워크(FastAPI, SpringDoc)가 반환하는 JSON 형식의 OpenAPI/Swagger 명세를 Swagger UI, Redoc, API 게이트웨이 도구에서 선호하는 YAML 형식으로 변환합니다.
설정 마이그레이션
JSON에 저장된 애플리케이션 설정(appsettings.json, config.json)을 YAML이 필요하거나 선호하는 도구용 YAML 형식으로 마이그레이션하여 주석으로 문서화할 수 있습니다.

기술 세부 정보

RFC 8259 호환 JSON 파싱
JSON 입력은 브라우저의 네이티브 JSON.parse()를 사용하여 파싱되며 RFC 8259를 완전히 준수합니다. 위치 정보(최선의 줄 및 열 번호)를 포함한 정확한 구문 오류 메시지를 제공하며 모든 JSON 데이터 타입(문자열, 숫자, 불리언, null, 배열, 객체)을 처리합니다.
YAML 1.1 스키마를 사용하는 eemeli/yaml Document API를 통한 YAML 1.2 출력
YAML은 eemeli/yaml 라이브러리(v2.8+, CVE 안전)를 통해 version: '1.1'로 Document API를 사용하여 생성됩니다. 이 조합은 YAML 1.2 호환 출력을 생성하면서 YAML 1.1 인용 규칙을 적용합니다 — Norway 문제 문자열(yes/no/on/off/y/n)이 출력에서 자동으로 인용되어 YAML 1.1 및 1.2 파서 모두에서 안전합니다. 긴 문자열을 온전히 유지하기 위해 줄 바꿈이 비활성화됩니다(lineWidth: 0).
100% 브라우저 기반 — 업로드 없음, 서버 없음
모든 처리는 브라우저의 자바스크립트 엔진에서 완전히 실행됩니다. 어떤 시점에서도 네트워크를 통해 데이터가 전송되지 않습니다. 200KB보다 큰 입력은 자동으로 실시간 모드에서 수동 모드(명시적인 변환 클릭 필요)로 전환되어 브라우저 응답성을 유지하고 무거운 직렬화 중 메인 스레드 블로킹을 방지합니다.

모범 사례

DevOps 설정에는 항상 자동 인용 모드 사용
Kubernetes, Helm, Ansible, Docker Compose, GitHub Actions에서 사용할 JSON을 변환할 때는 항상 기본 자동(Norway 안전) 인용 모드를 사용하세요. 이러한 도구의 YAML 1.1 파서는 단순 문자열 yes, no, on, off, y, n을 불리언으로 잘못 해석합니다 — 자동 모드가 이를 투명하게 방지합니다.
클라우드 네이티브 도구에는 2칸 들여쓰기 사용
Kubernetes, Docker Compose, GitHub Actions, Helm은 관례적으로 2칸 들여쓰기를 사용합니다. 이러한 파일에서 4칸 들여쓰기를 사용하는 것은 유효한 YAML이지만 커뮤니티 예시, 자동 생성된 설정, 팀의 기존 매니페스트와 불일치를 만들 수 있습니다.
변환 전 큰 정수를 문자열로 저장
API 서버의 Kubernetes resourceVersion, uid, 기타 int64 필드는 자바스크립트의 안전한 정수 범위(2^53 - 1)를 초과할 수 있습니다. 정확한 수치 정밀도가 필요하다면 변환 전에 이 값들을 JSON 문자열로 저장하세요. 서버 측 생성 필드가 포함된 kubectl get -o json 출력에 특히 중요합니다.
먼저 JSON 유효성 검사
JSON 소스가 직접 작성되었거나 유효하지 않은 출력을 가끔 생성하는 시스템(후행 쉼표, 인용되지 않은 키, 주석)에서 온 경우 변환 전에 JSON 포맷터로 유효성을 검사하세요. JSON 포맷터를 사용하여 먼저 구문 오류를 찾아 수정한 다음 깨끗한 JSON을 YAML로 변환하세요.
버전 관리에 들어가는 파일에는 블록 스타일 선호
블록 스타일 YAML은 각 필드가 별도 줄에 표시되기 때문에 Git에서 사람이 읽기 쉬운 diff를 생성합니다. Flow 스타일(컴팩트한 인라인)은 diff를 읽고 검토하기 어렵게 만듭니다. Flow 스타일은 문서에 짧은 YAML 스니펫을 삽입하거나 컴팩트한 출력이 필요한 도구에 한해 사용하세요.

자주 묻는 질문

온라인에서 JSON을 YAML로 어떻게 변환하나요?
위 입력 필드에 JSON을 붙여넣으세요. 버튼을 클릭하지 않아도 브라우저에서 즉시 YAML로 변환됩니다. 옵션 패널에서 들여쓰기(2칸 또는 4칸), 인용 방식(자동, 큰따옴표, 작은따옴표), 출력 스타일(블록 또는 Flow)을 조정할 수 있습니다. 출력 영역에 YAML이 표시되면 복사를 클릭해 클립보드에 저장하거나 다운로드를 클릭해 .yaml 파일로 저장하세요. 모든 처리는 로컬에서 실행됩니다 — 데이터가 기기를 벗어나지 않습니다.
YAML Norway 문제란 무엇이며, 이 도구는 어떻게 처리하나요?
YAML Norway 문제는 YAML 1.1 명세의 특이 사항으로, "no", "yes", "on", "off", "y", "n" 같은 단순 문자열이 문자열이 아닌 불리언(false/true)으로 파싱되는 현상을 말합니다. 이 문제로 Norway의 ISO 국가 코드 "NO"가 Ansible 플레이북과 Kubernetes 설정에서 불리언 false로 잘못 읽히는 실제 사례가 발생했습니다. YAML 1.2에서는 수정되었지만, 수많은 프로덕션 파서(구버전 Kubernetes, PyYAML, Ansible, Ruby의 Psych)가 여전히 YAML 1.1을 사용합니다. 이 도구의 기본 자동 인용 모드는 모든 Norway 문제 문자열에 자동으로 인용 부호를 추가하여 YAML 1.1과 1.2 파서 모두에서 안전하게 왕복 변환할 수 있도록 합니다. Norway 문제 문자열이 감지되면 경고 배너에 자동으로 인용된 값이 표시됩니다.
Norway 문제가 Kubernetes와 DevOps에 미치는 영향은 무엇인가요?
Kubernetes YAML 매니페스트, Helm 차트 values, Ansible 플레이북, GitHub Actions 워크플로는 모두 역사적으로 YAML 1.1을 사용하는 도구로 파싱됩니다. 설정 키 값이 "no"인 경우(예: 국가 코드, 문자열 형식의 활성화 플래그, 커스텀 불리언 필드), YAML 1.1 파서는 이를 자동으로 불리언 false로 변환합니다. YAML을 텍스트로 보면 올바르게 보이지만 파싱 후 동작이 달라지기 때문에 디버깅이 매우 어려운 서비스 설정 오류가 발생합니다. Kubernetes 또는 DevOps 도구체인에서 사용할 JSON을 변환할 때는 항상 자동 인용 모드를 사용하여 안전한 왕복 변환을 보장하세요.
YAML에서 2칸과 4칸 들여쓰기 중 어느 것을 사용해야 하나요?
Kubernetes 매니페스트, Helm values, Docker Compose 파일, GitHub Actions 워크플로에는 2칸 들여쓰기를 사용하세요 — 이것이 이러한 도구의 커뮤니티 관례이며 kubectl, Helm, Docker가 기대하는 형식입니다. Ansible 플레이북(4칸 관례를 따름)이나 팀 또는 조직의 스타일 가이드에서 요구하는 경우에는 4칸을 사용하세요. YAML은 탭 문자를 완전히 금지합니다 — 모든 들여쓰기는 공백이어야 합니다. 이 도구는 기본적으로 2칸을 사용하며, 이는 대부분의 클라우드 네이티브 사용 사례에 적합한 선택입니다.
이 도구로 Kubernetes 매니페스트를 만들려면 어떻게 하나요?
JSON 형식의 Kubernetes 리소스 정의(kubectl get deployment my-app -o json, API 응답, Terraform 리소스 블록에서 가져온 것)가 있으면 입력 필드에 붙여넣으세요. 2칸 들여쓰기(기본값)와 자동 인용(기본값, Norway 문제 처리)을 선택하세요. YAML 출력은 즉시 kubectl apply -f에 사용할 수 있습니다. 다운로드를 클릭하여 .yaml 확장자로 저장한 후 kubectl apply -f -로 파이프할 수도 있습니다. 위의 K8s Deployment 예시는 수정하여 사용할 수 있는 완전한 배포 매니페스트를 보여줍니다.
Docker Compose JSON을 YAML로 변환하려면 어떻게 하나요?
입력 필드에 Docker Compose JSON을 붙여넣으세요. 2칸 들여쓰기(Docker Compose 관례)와 블록 스타일을 사용하세요. 출력 YAML은 docker compose up, docker compose config, Docker Stack과 호환됩니다. docker inspect로 실행 중인 스택의 설정을 내보낸 후 compose.yaml 파일로 변환하는 것이 일반적인 시나리오입니다. 위의 Docker Compose 예시에는 포트, 환경 변수, 볼륨, depends_on이 포함된 완전한 서비스 정의가 있습니다.
2^53보다 큰 JSON 숫자를 YAML로 변환하면 정밀도가 손실되나요?
그렇습니다. 이것은 자바스크립트의 근본적인 한계입니다. 자바스크립트의 Number 타입은 IEEE 754 배정밀도 부동소수점을 사용하며 2^53 - 1(9007199254740991) 이하의 정수만 정확히 표현할 수 있습니다. 이보다 큰 정수(예: 서버에서 int64인 Kubernetes의 resourceVersion 필드)는 JSON.parse()로 파싱할 때 자동으로 반올림됩니다. 예를 들어 9007199254740993은 자바스크립트에서 9007199254740992가 되며, 이 잘린 숫자가 YAML 출력에 나타납니다. 이 문제는 이 도구뿐만 아니라 브라우저 기반의 모든 JSON 도구에 영향을 미칩니다. 안전한 해결 방법은 변환 전에 큰 정수를 문자열로 저장하는 것입니다("resourceVersion": "9007199254740993") — 정밀도 손실 없이 처리됩니다.
변환기가 JSON의 원래 키 순서를 유지하나요?
그렇습니다. 이 도구가 사용하는 eemeli/yaml 라이브러리는 삽입 순서를 유지하며, 이는 모든 현대 자바스크립트 엔진(V8, SpiderMonkey, JavaScriptCore)에서 JSON.parse()의 동작과 일치합니다. 키는 JSON 입력에 나타난 순서와 동일하게 YAML 출력에 표시됩니다. 이는 필드 순서가 가독성과 diff에 중요한 Kubernetes 매니페스트와 OpenAPI 명세에 특히 중요합니다.
JSON과 YAML 중 언제 무엇을 사용해야 하나요?
JSON을 사용하는 경우: API와 웹 서비스를 구축할 때(JSON은 범용 교환 형식), 기계 파싱 속도가 중요할 때, 엄격한 타입 안전성이 필요할 때, 또는 소비자가 자바스크립트/타입스크립트 애플리케이션일 때입니다. YAML을 사용하는 경우: 사람이 편집하는 설정 파일(Kubernetes 매니페스트, CI/CD 파이프라인, Ansible 플레이북, Helm values)을 작성할 때, 설정에 주석을 추가하고 싶을 때, 또는 가독성이 엄격성보다 중요할 때입니다. 실용적인 원칙: 기계가 먼저 쓰거나 읽는다면 JSON을, 사람이 쓰고 기계가 읽는다면 YAML을 사용하세요.
명령줄에서 JSON을 YAML로 변환하려면 어떻게 하나요?
가장 널리 사용되는 방법은 yq와 jq를 조합하는 것입니다. yq(Mike Farah 버전, Python 버전이 아님) 설치: macOS는 brew install yq, Linux는 wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq를 사용하세요. 그런 다음 cat input.json | yq -P로 YAML로 출력합니다. 또는 yq -o yaml input.json이나 cat input.json | python3 -c "import sys, json, yaml; yaml.dump(json.load(sys.stdin), sys.stdout, default_flow_style=False)"를 사용할 수 있습니다. Kubernetes의 경우 kubectl get deployment my-app -o yaml로 클러스터 API에서 직접 변환합니다.
Python, Node.js, Go에서 JSON을 YAML로 변환하려면 어떻게 하나요?
Python: import json, yaml; yaml.dump(json.load(open('input.json')), open('output.yaml', 'w'), default_flow_style=False) — PyYAML 사용. 왕복 충실도를 위해서는 ruamel.yaml을 사용하세요. Node.js: import { Document } from 'yaml'; const doc = new Document(JSON.parse(input), { version: '1.1' }); const result = doc.toString({ indent: 2, lineWidth: 0 }) — 이 도구가 사용하는 것과 동일한 라이브러리와 방식입니다. Go: import gopkg.in/yaml.v3; json.Unmarshal(jsonBytes, &data); yaml.Marshal(data) — Go YAML v3는 기본적으로 YAML 1.1을 사용하므로 Norway 문제 문자열이 자동으로 인용됩니다.
이 도구를 사용할 때 JSON 데이터가 서버로 전송되나요?
아니요. 모든 변환은 자바스크립트를 사용하여 브라우저에서 완전히 처리됩니다. JSON 데이터는 네트워크를 통해 전송되지 않고, 어떤 서버에도 저장되지 않으며, 기록되거나 분석되지 않습니다. 따라서 API 키, 데이터베이스 자격 증명, 내부 설정 파일, 프로덕션 Kubernetes 매니페스트, 기타 민감한 데이터와 함께 안전하게 사용할 수 있습니다. 브라우저의 네트워크 탭을 열면 확인할 수 있습니다 — JSON을 붙여넣어도 아무 요청도 발생하지 않습니다.
JSON 입력에 파일 크기 제한이 있나요?
파일 크기 제한은 없지만, 200KB 이상의 대용량 입력은 자동으로 실시간 변환에서 수동 모드로 전환됩니다. 수동 모드에서는 변환 버튼이 나타나며 클릭할 때만 변환이 실행됩니다 — 이렇게 하면 키를 입력할 때마다 브라우저 메인 스레드가 200-500ms 동안 블로킹되는 것을 방지합니다. 매우 큰 JSON 파일(여러 메가바이트)의 경우 더 나은 성능을 위해 yq나 jq 같은 명령줄 도구 사용을 고려하세요. 이 도구는 전체 Kubernetes 네임스페이스 내보내기, 대용량 OpenAPI 명세, 멀티 서비스 Docker Compose 파일 같은 실제 페이로드를 효율적으로 처리합니다.

Base64 디코더 · 인코더 (Base64 Decoder & Encoder)

인코딩 & 포매팅

Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.

JSON 포맷터 (JSON Formatter)

인코딩 & 포매팅

브라우저에서 JSON을 즉시 포매팅하고 유효성 검사를 수행합니다. 온라인 도구로 구문 검사, 오류 감지, 최소화, 복사를 지원하며 데이터는 서버로 전송되지 않습니다.

URL 인코더 · 디코더 (URL Encoder & Decoder)

인코딩 & 포매팅

URL을 실시간 인코딩·디코딩하고 내장 파서로 구조를 분석합니다. encodeURI와 encodeURIComponent 모드를 온라인에서 지원하며 데이터는 브라우저를 떠나지 않습니다.

YAML to JSON 변환기 (YAML to JSON Converter)

인코딩 & 포매팅

YAML을 붙여넣으면 즉시 JSON으로 변환됩니다. K8s 매니페스트, OpenAPI 명세, Helm values 지원, 앵커/별칭 완전 확장, 100% 개인 정보 보호.

진법 변환기 (Number Base Converter)

변환 도구

2진수, 16진수, 10진수, 8진수 및 임의 진법(2-36)을 즉시 변환합니다. 온라인에서 무료로 사용할 수 있으며 모든 처리는 브라우저에서 이루어집니다.

이미지 압축기 · JPEG, PNG, WebP 온라인 압축

변환 도구

JPEG, PNG, WebP 이미지를 온라인에서 최대 80% 압축합니다. 브라우저 안에서만 처리되며 업로드 없이 20장 일괄 처리, 품질 조절, 전후 비교를 무료로 지원합니다.