JSON Toolkit

JSON인가 YAML인가

핵심 요약: JSON은 중괄호로, YAML은 들여쓰기로 구분합니다. 기계에는 JSON, 사람이 설정을 편집할 때는 YAML입니다. 주석, 앵커, 다중 문서 구조는 변환에서 살아남지 않습니다.

초급약 4분 소요2026-10-30 발행2026-10-30 업데이트
JSON을 언제 쓰고 YAML을 언제 쓰는가

핵심부터 말하면, 기계 간 데이터에는 JSON, 사람이 편집하는 설정에는 YAML을 쓰세요. 주석, 여러 줄 텍스트, 앵커가 필요하면 YAML을, 모든 언어가 같은 페이로드를 모호함 없이 파싱해야 하면 JSON을 선호하세요.

나란히

{
  "server": {
    "host": "127.0.0.1",
    "port": 8080
  }
}
server:
  host: 127.0.0.1
  port: 8080

같은 구조입니다. YAML은 구두점을 없애고 주석을 둘 자리를 얻습니다.

다른 점

JSON YAML
구조 중괄호와 쉼표 들여쓰기
주석 없음 있음
문자열 큰따옴표, 이스케이프 필요 대개 맨 문자열
여러 줄 텍스트 \n 이스케이프 또는 배열 `
재사용 없음 앵커 &와 별칭 *
여러 문서 배열로 감싸기 --- 구분자
파싱 속도 빠름 느림, 들여쓰기 규칙
모호함 매우 낮음 no가 불리언으로 파싱, 들여쓰기 한 칸 오차

마지막 행이 YAML의 진짜 비용입니다. YAML 1.1에서 country: NO는 불리언 false가 되고 version: 1.0은 부동소수점이 될 수 있습니다. JSON에는 암묵적 타입이 전혀 없습니다.

선택

JSON: 요청과 응답 본문, 서비스 간 메시지, 데이터베이스의 JSON 열, 모든 언어에서 동일하게 파싱되어야 하는 모든 것.

YAML: 기본값인 생태계(Kubernetes, Ansible, GitHub Actions, Docker Compose), 설명이 필요한 설정, 인증서나 스크립트, SQL처럼 긴 텍스트가 지배하는 파일.

변환이 잃는 것

YAML → JSON: 모든 주석, 앵커 재사용(중복으로 확장), 첫 문서를 제외한 나머지 문서, 날짜와 불리언의 원래 표기.

JSON → YAML: 문자열/숫자 구분이 약해져 "8080"과 8080 모두 안전하게 유지하려면 명시적 인용이 필요합니다.

이전과 일회성 검사를 위해 변환하세요. 같은 파일을 두 형식의 병렬 뷰로 유지하지 마세요.

FAQ

JSON과 YAML 중 어떻게 결정하나?

파일을 누가 읽고 관리하는지에서 시작하세요. 프로그램이 생성하고 언어 경계를 넘으며 예측 가능하게 파싱되어야 하면 JSON, 사람이 편집하고 필드 설명이나 긴 여러 줄 텍스트가 필요하면 YAML을 쓰세요. 서로 변환되지만 같은 설정을 두 형식으로 장기 유지하지 마세요.

YAML이 왜 더 많은 타입 모호함을 만드나?

YAML에는 암묵적 타입이 있어 NO, on, 1.0 같은 값이 불리언, 날짜, 숫자가 될 수 있습니다. JSON은 명시적 타입만 있어 문자열에 따옴표를 붙여야 하고, 그래서 언어 간 파싱이 더 예측 가능합니다.

YAML을 JSON으로 변환할 때 주석과 앵커가 살아남아야 하나?

아니요. YAML 주석, 앵커, 여러 문서는 JSON에서 표현되지 않고 앵커는 중복 내용으로 확장됩니다. 보존해야 하면 객체 왕복 대신 Document API가 있는 YAML 라이브러리를 쓰세요.

더 읽을거리