코드 한 줄도 작성하지 않고 JSON을 YAML로 (그리고 다시) 변환하는 방법

발행: (2026년 5월 3일 AM 10:30 GMT+9)
9 분 소요
원문: Dev.to

Source: Dev.to

번역하려는 텍스트가 제공되지 않았습니다. 번역이 필요한 본문을 알려주시면 한국어로 번역해 드리겠습니다.

JSON과 YAML이 계속 충돌하는 이유

JSON과 YAML은 동일한 데이터 모델—키‑값 쌍, 배열, 중첩 객체—을 나타내지만 표현 방식이 다릅니다. JSON은 중괄호와 대괄호를 사용하고, YAML은 들여쓰기와 대시(-)를 사용합니다. 이 때문에 구조적으로는 호환되지만 시각적으로는 호환되지 않습니다.

충돌은 다음과 같은 실제 상황에서 가장 자주 발생합니다:

  • API 응답 → Kubernetes 매니페스트. API(JSON)에서 구성 데이터를 가져와 ConfigMap 또는 Secret(YAML)에 삽입해야 합니다.
  • GitHub Actions / CI 파이프라인. 워크플로 파일은 YAML이지만, 도구 설정(ESLint, Prettier, TypeScript)은 종종 JSON 형태로 존재합니다.
  • Helm 차트 값. 기본값은 YAML이며, 템플릿 로직이 그와 함께 JSON을 생성할 수 있습니다.
  • Ansible 플레이북. JSON으로 정의된 변수는 YAML 플레이북 작업으로 전달되어야 합니다.

변환은 기계적이지만 여전히 까다롭다

같은 데이터가 두 형식에서 어떻게 보이는지 살펴보세요:

JSON

{
  "server": {
    "host": "api.example.com",
    "port": 8080,
    "tls": true
  },
  "retries": 3,
  "tags": ["production", "us-east-1"]
}

YAML 등가물

server:
  host: api.example.com
  port: 8080
  tls: true
retries: 3
tags:
  - production
  - us-east-1

변경 사항을 확인하세요: 중괄호가 없고, 일반 문자열 주위에 따옴표가 없으며, 배열은 대시(-)가 앞에 붙은 리스트로 바뀌고, 전체 구조는 일관된 들여쓰기에 의존합니다. 한 칸이라도 잘못 들여쓰면 YAML 파서는 오류를 발생시킵니다.

반대 방향으로 변환하는 것도 마찬가지로 기계적이지만, 손으로 변환할 경우 특히 깊게 중첩된 객체에서는 실수가 발생하기 쉽습니다.

브라우저에서 변환하기: 빠른 경로

매번 변환 코드를 작성하는 대신, JSON to YAML Converter 를 사용하면 브라우저에서 바로 처리할 수 있습니다. 왼쪽에 JSON을 붙여넣으면 오른쪽에 깔끔한 YAML이 표시됩니다. 회원가입이 필요 없으며, 데이터가 브라우저를 떠나지 않습니다.

변환하기 전에 JSON이 유효한지 확인하세요. 압축된 API 응답이나 로그에서 복사한 JSON은 종종 숨겨진 문제를 가지고 있습니다 — 뒤에 붙은 콤마, 이스케이프되지 않은 문자, 혹은 큰따옴표 대신 작은따옴표 등. 먼저 JSON Beautifier & Validator 로 한 번 포맷하고 검증하면, 깨진 JSON을 변환기에 넣어 출력이 이상하게 나오는 상황을 방지할 수 있습니다.

실제 예시: Kubernetes ConfigMap

배포 파이프라인에서 나온 이 JSON 설정이 있다고 가정해 보겠습니다:

{
  "database": {
    "host": "postgres.internal",
    "port": 5432,
    "name": "app_production",
    "ssl_mode": "require"
  },
  "cache": {
    "ttl": 300,
    "max_size": 1000
  },
  "feature_flags": {
    "new_checkout": true,
    "beta_search": false
  }
}

변환 후, Kubernetes ConfigMap에 바로 넣을 수 있는 YAML을 얻습니다:

database:
  host: postgres.internal
  port: 5432
  name: app_production
  ssl_mode: require
cache:
  ttl: 300
  max_size: 1000
feature_flags:
  new_checkout: true
  beta_search: false

깨끗하고 들여쓰기된 상태이며 바로 삽입할 수 있습니다. 도구가 구조 매핑을 처리하므로, 출력이 올바른지 확인하기만 하면 됩니다.

반대 방향으로: YAML을 JSON으로 되돌리기

역변환도 마찬가지로 중요합니다. GitHub Actions 워크플로 파일은 YAML 형식인데, JSON을 기대하는 스크립트에서 특정 값을 파싱해야 할 때가 있습니다. 혹은 동료가 Ansible 변수 파일을 보내고, 테스트 하네스가 JSON 전용일 경우도 마찬가지입니다.

동일한 JSON to YAML Converter 는 양방향 변환을 지원합니다 — YAML 패널에 YAML을 붙여넣으면 JSON을 얻을 수 있습니다.

YAML → JSON 변환 시 주의할 점: YAML은 타임스탬프, 멀티라인 문자열(|> 블록), 앵커/별칭(&*)에 대한 네이티브 지원을 제공합니다. 이러한 요소들은 JSON에 직접적인 대응이 없으므로 일반 문자열로 직렬화되거나 인라인으로 해결됩니다. YAML에서 이러한 기능을 많이 사용한다면, 다운스트림에서 사용하기 전에 JSON 출력물을 꼼꼼히 검토하십시오.

코드를 사용해 변환을 작성해야 할 때

일회성 설정 수정이라면 브라우저 도구가 가장 빠른 방법입니다. 하지만 빌드 파이프라인이나 자동화 스크립트의 일부로 변환을 수행해야 한다면 코드를 사용하는 것이 좋습니다. 아래는 흔히 사용되는 몇 가지 언어에서의 관용적인 예시입니다:

Python

import json
import yaml

with open("config.json") as f:
    data = json.load(f)

with open("config.yaml", "w") as f:
    yaml.dump(data, f, default_flow_style=False)

Node.js (with js-yaml)

const fs = require('fs');
const yaml = require('js-yaml');

const data = JSON.parse(fs.readFileSync('config.json', 'utf8'));
fs.writeFileSync('config.yaml', yaml.dump(data));

대화형 탐색이나 디버깅을 위해—특히 변환된 파일이 왜 이상하게 보이는지 확신이 서지 않을 때—브라우저 도구가 자동화가 설정돼 있더라도 가장 빠른 피드백 루프를 제공합니다.

추가 읽기

JSON과 YAML이 어디에서 다른지 궁금하다면 …

구문을 넘어 — 데이터 유형 처리, 주석 지원, 스키마 엄격성 — JSON vs YAML comparison 페이지에서는 두 형식 간의 구조적 트레이드‑오프에 대해 더 깊이 다룹니다.

Source:

어떤 포맷 불일치가 가장 자주 발생하나요?

궁금한데요 — 주로 API → 설정 파일 방향에서 문제가 생기나요, 아니면 YAML → JSON(테스트나 스크립팅용) 변환이 워크플로우에서 더 큰 고통인가요? 아래에 댓글을 남겨 주세요.

이 글에서 사용한 무료 도구

  • JSON to YAML Converter — 브라우저에서 JSON과 YAML 포맷을 즉시 양방향으로 변환합니다.
  • JSON Beautifier & Validator — 변환하기 전에 JSON을 포맷하고 검증하여 숨겨진 오류를 빠르게 찾아냅니다.
  • All tools — 클라이언트‑사이드이며, 회원가입이 필요 없고, 브라우저를 떠나는 데이터가 없습니다.
0 조회
Back to Blog

관련 글

더 보기 »