← 모든 도구

JSON → YAML 변환기

브라우저에서 JSON을 YAML로, YAML을 JSON으로 즉시 변환하세요. 로컬 전용·비공개이며 주석, 타입, 들여쓰기, 앵커에 대한 설명도 제공합니다.

브라우저에서 JSON을 YAML로, YAML을 JSON으로 변환

JSON과 YAML은 같은 종류의 데이터, 즉 중첩된 맵, 목록, 문자열, 숫자, 불리언을 설명하지만 매우 다르게 생겼고 서로 다른 곳에서 사용됩니다. API, 컨테이너 파일, CI 파이프라인 근처에서 시간을 보내다 보면 결국 하나를 다른 것으로 변환해야 할 일이 생깁니다. 이 페이지는 브라우저 안에서 완전히 양방향으로 변환을 수행하므로, 붙여넣는 데이터가 내 기기를 벗어나지 않습니다.

어두운 남색 배경 위에서 빛의 추상적인 중괄호가 깔끔하게 들여쓴 설정 레이어로 변형되는 모습
JSON 구조가 들여쓰기 기반 YAML로 펼쳐지는 모습.

JSON이란 무엇이며 어디에 사용되는가

JSON(JavaScript Object Notation)은 기계를 먼저 위해 설계된 엄격한 괄호-중괄호 형식입니다. 모든 객체는 {}로 감싸이고, 모든 배열은 []로, 키와 문자열 값은 큰따옴표로 묶이며, 항목은 쉼표로 구분됩니다. REST 및 GraphQL API의 기본 전송 형식이고, 대부분의 웹훅 본문이며, NoSQL 문서의 형태이고, fetch 호출이 반환하는 것입니다. 거의 모든 언어가 기본적으로 파싱할 수 있는데, JavaScript의 JSON.parse, Python 표준 라이브러리의 json, 그리고 다른 곳의 동등한 것들이 이것이 API 계층에서 승리한 정확한 이유입니다. 단점은 JSON이 손으로 쓰기에 장황하고 주석을 금지한다는 것으로, 인간이 하루 종일 편집하는 파일로는 좋지 않은 형식입니다.

YAML이란 무엇이며 어디에 사용되는가

YAML(YAML Ain't Markup Language)은 반대 우선순위로 설계되었습니다. 인간 먼저입니다. 중괄호와 따옴표를 버리고, 들여쓰기를 사용하여 중첩을 표현하며, #으로 주석을 쓸 수 있습니다. 이 가독성이 설정의 공통어가 된 이유입니다. Docker Compose 파일, Kubernetes 매니페스트, GitHub Actions 및 GitLab CI 워크플로우, Ansible 플레이북, 수많은 앱 설정 파일이 모두 YAML입니다. 일반적인 YAML 문서는 동등한 JSON보다 눈에 띄게 짧고 풀 리퀘스트에서 diff 보기가 훨씬 쉽습니다. 그 우아함의 비용은 취약성인데, 변환이 흥미로워지는 지점입니다.

변환 시 중요한 주요 차이점

세 가지 차이점이 거의 모든 변환 결정을 유도합니다. 첫째, YAML에서 공백은 의미 있고 JSON에서는 무의미합니다. YAML은 구조를 나타내기 위해 탭이 아닌 공백을 사용하므로, 하나의 잘못 정렬된 공백이 문서의 의미를 조용히 바꿀 수 있습니다. JSON은 들여쓰기를 전혀 신경 쓰지 않습니다. 둘째, YAML은 주석을 지원하지만 JSON은 그렇지 않습니다. YAML의 # 주석은 JSON을 생성할 때 단순히 사라지는데, 이를 담을 곳이 없기 때문입니다. 셋째, YAML은 더 풍부하고 암묵적인 타이핑을 가집니다. 날짜, 타임스탬프, 여러 철자의 null을 기꺼이 읽으며, 따옴표 없는 값에서 유형을 추측합니다. JSON은 작고 명시적인 유형 집합을 가지며 모호함이 없습니다. 또한 JSON은 기술적으로 YAML 1.2의 하위 집합이므로, 유효한 JSON은 보통 YAML로 깨끗하게 파싱되지만 그 반대는 보장되지 않습니다.

청록색과 금색으로 빛나는 두 가지 구조적 형식 사이에서 변환되는 중첩된 데이터 트리
두 가지 형식으로 표현된 동일한 데이터 트리.

주의해야 할 변환 함정

왕복 변환이 항상 무손실은 아니며, 어디서 문제가 생기는지 아는 것이 중요합니다:

  • 노르웨이 문제. YAML 1.1 규칙에서 따옴표 없는 NO는 불리언 false로 파싱되며, yes, on, off도 불리언이 됩니다. 국가 코드나 스위치 레이블이 알아채기 전에 true/false로 바뀔 수 있습니다. 문자열로 의도한 값은 따옴표로 감싸세요.
  • 숫자 강제 변환. 3.10과 같은 버전은 뒤의 0을 잃고 3.1이 될 수 있으며, 1.0은 텍스트를 원했을 때도 숫자가 됩니다. 버전 문자열과 ID는 따옴표로 감싸세요.
  • 앵커와 별칭이 사라집니다. YAML의 &anchor*alias 참조에는 JSON 동등물이 없습니다. 좋은 변환기는 이를 전체 값으로 확장하므로 데이터는 정확하지만 중복 제거가 사라집니다. JSON에서 YAML로, 다시 JSON으로 변환해도 원래 앵커가 재구성되지 않습니다.
  • 주석과 블록 스칼라. 주석은 JSON으로 가는 과정에서 버려집니다. 여러 줄 블록 스칼라(|>)는 \n 이스케이프가 있는 일반 JSON 문자열로 축소되므로 시각적 서식 의도가 손실됩니다.
  • YAML로 돌아갈 때 들여쓰기. JSON은 들여쓰기를 인코딩하지 않으므로 변환기가 일관된 스타일을 선택합니다. 탭에 민감한 도구에 붙여넣기 전에 검토하세요.

로컬 전용이 중요한 이유

설정 파일과 API 페이로드는 무작위 서버에 업로드해서는 안 되는 종류의 것들입니다. 호스트명, 토큰, 내부 서비스 이름, 또는 고객 데이터를 담고 있는 경우가 많습니다. 이 변환기는 브라우저에서 JavaScript로 파싱-출력 단계를 실행합니다. 백엔드로 전송되는 것이 없고, 기록되는 것이 없으며, 페이지가 로드되면 오프라인에서도 작동합니다. Kubernetes 시크릿이나 CI 워크플로우를 내 기기에 남는다는 확신으로 붙여넣을 수 있습니다.

관련 도구가 필요하신가요? 데이터 변환기 전체 세트를 살펴보고, JSON 포매터로 지저분한 입력을 정리하고, API 세계와 설정 세계 사이를 이동해야 할 때마다 여기로 돌아오세요.

자주 묻는 질문

데이터가 어딘가에 업로드되나요?

아니요. 변환은 로컬 JavaScript를 사용하여 브라우저에서 완전히 이루어집니다. JSON이나 YAML이 서버로 전송되지 않으므로 시크릿과 설정 파일이 비공개 상태를 유지합니다.

YAML 값 true나 false가 예상치 않게 바뀐 이유는 무엇인가요?

YAML 1.1은 yes, no, on, off와 같은 따옴표 없는 단어를 불리언으로 취급합니다. 이것이 노르웨이 문제입니다. 문자열로 의도한 값은 따옴표로 감싸서 텍스트로 변환에서 살아남도록 하세요.

YAML을 JSON으로 변환할 때 주석은 어떻게 되나요?

JSON에는 주석 문법이 없으므로 모든 해시 주석이 변환 중에 제거됩니다. 노트를 보존해야 한다면 권위 있는 사본을 YAML로 유지하세요.

YAML 앵커와 별칭이 보존되나요?

JSON에는 참조 메커니즘이 없으므로 전체 값으로 확장됩니다. 데이터는 올바르게 유지되지만, YAML로 다시 변환해도 중복 제거를 복구할 수 없습니다.

JSON을 YAML로, YAML을 JSON으로 변환할 수 있나요?

예, 도구가 양방향으로 작동합니다. JSON을 붙여넣으면 YAML을 얻고, YAML을 붙여넣으면 JSON을 얻으며, 변환기가 다른 형식을 감지하고 출력합니다.

탭을 사용하면 YAML이 왜 깨지나요?

YAML은 들여쓰기를 위해 공백이 필요하며 탭을 거부합니다. 붙여넣기가 파싱에 실패하면 탭 문자를 공백으로 바꾸고 들여쓰기를 일관되게 유지하세요.