한국어

개발자 도구 · 구문 변환기

JSON에서 YAML로의 변환 작동 방식: 인용, 들여쓰기 및 흐름 스타일

· 작동 원리

JSON YAML 개발자 워크플로

들여쓰기된 YAML 서비스 정의로 변경되는 중첩된 JSON 객체
원본 ToolAcre 벡터 일러스트

JSON에서 YAML로의 변환은 중괄호를 삭제하는 문제처럼 보이지만 변환기는 어떤 문자열에 따옴표가 필요한지, 블록 스타일과 흐름 스타일을 언제 사용할지에 대한 실제 결정을 내립니다. 이 게시물에서는 이러한 결정을 안내합니다.

중괄호는 사라지는데 따옴표는 어디로 가나요? — YAML로 변환된 JSON 페이로드와 결과에 인용된 문자열과 베어 문자열이 혼합된 결과

중괄호와 따옴표를 제거해도 JSON 개체가 신뢰할 수 있는 YAML 파일로 만들어지지는 않습니다. 변환기는 중첩된 매핑, 배열, 문자열 및 줄 바꿈이 표시되는 방법과 숫자 또는 부울처럼 보이는 값이 텍스트로 유지되는지 여부를 결정해야 합니다. API 서비스 정의를 Compose로 이동하는 DevOps 엔지니어는 결과를 배포 디렉터리에 복사하기 전에 이러한 결정을 예측할 수 있어야 합니다. 변환은 서비스의 실제 구성이 아닌 구문을 변경합니다.

JSON은 (거의) 이미 YAML입니다. 변환이 시작되기 전에 입력이 유효한 YAML 1.2 흐름 스타일인 이유

YAML 1.2는 JSON 구문을 일반 JSON 모양 데이터에 대해 허용되는 흐름 스타일 하위 집합으로 처리합니다. 이는 JSON 개체가 이미 YAML에 가까운 이유를 설명합니다. 그러나 유용한 변환은 일반적으로 사람이 읽을 수 있는 블록 스타일 들여쓰기로 전환됩니다. 입력은 먼저 JSON으로 구문 분석됩니다. 임의의 쉘 명령은 실행되지 않습니다. ToolAcre는 역방향 경로의 제한된 스키마를 통해 YAML을 로드하고 안전하지 않은 태그 및 경계 별칭 확장을 거부하므로 변환기를 사용하여 신뢰할 수 없는 !!js/function 태그에서 임의 개체를 인스턴스화할 수 없습니다.

블록 스타일 대 흐름 스타일 - 변환기가 중괄호 및 대괄호 대신 들여쓰기 기반 매핑 및 시퀀스를 선택하는 방법과 들여쓰기 깊이의 의미

블록 스타일은 들여쓰기된 키/값 쌍과 배열 항목에 대시로 시작하는 줄을 사용합니다. services.web 아래의 이미지 문자열은 웹 아래에 들여쓰기되고 포트는 시퀀스가 됩니다. 흐름 스타일은 JSON과 같은 중괄호와 대괄호를 유지합니다. ToolAcre는 단순히 구두점을 정규식으로 바꾸는 대신 기본적으로 두 칸 들여쓰기, 참조 없음 및 무제한 선 너비 설정이 포함된 js-yaml 덤프를 사용합니다. 들여쓰기 너비를 변경하면 실제 키나 배열 순서가 아닌 가독성에 영향을 미칩니다.

따옴표로 묶어야 하는 문자열 — 부울, 숫자, Null 또는 날짜, 콜론, 해시 또는 선행 공백이 있는 문자열이 되는 값

일부 문자열은 다른 파서에서 살아남기 위해 인용되어야 합니다. "false"는 부울 false가 아닌 텍스트로 유지되어야 하며, "2026-09-28"은 YAML 1.1 소비자에서 자동으로 날짜가 되어서는 안 되며, 콜론 뒤에 공백이 오면 매핑 구문으로 오해될 수 있습니다. ToolAcre의 덤퍼는 이전 YAML 리더에 대한 호환성 선택을 포함하여 보호 견적을 선택합니다. 일반 이미지 참조를 콜론으로 인용하는 것이 항상 필요한 것은 아니며, 존재하는 인용문을 불필요하게 제거하면 왕복이 중단될 수 있습니다. 유형과 시각적 외관을 확인합니다.

여러 줄 문자열 — JSON 문자열 내부의 개행 문자가 리터럴(|) 또는 접힌(>) 블록 스칼라가 되는 방법

실제 개행 문자가 포함된 JSON 문자열은 |를 사용하여 YAML 블록 스칼라로 렌더링될 수 있습니다. |- 양식은 마지막 개행 문자를 제거하는 반면, | 그것을 보존합니다; > 일부 줄 바꿈을 공백으로 접습니다. 이러한 표시기는 서식 지정이 아닌 데이터를 설명합니다. ToolAcre의 덤퍼는 항상 하나의 스타일을 강제하는 대신 원래 문자열을 다시 읽을 수 있는 표현을 선택합니다. 변환 후 여러 줄의 환경 값이나 인증서를 주의 깊게 검사하세요. 여기에서 들여쓰기 오류가 발생하면 애플리케이션이 수신하는 내용이 변경될 수 있습니다.

작업 예: 서비스 정의 변환(중첩된 JSON 객체를 YAML로 변환, 각 인용 및 스타일 결정에 주석 추가)

구체적인 JSON 객체의 경우 이미지 "example/web:1", 포트 ["8080:80"] 및 환경 키 DEBUG="false", RELEASE="2026-09-28" 및 MESSAGE="line one\nline two"와 함께 services.web을 사용하세요. ToolAcre는 이미지: example/web:1 및 포트 목록을 내보냅니다. DEBUG는 'false'로 인용되고, RELEASE는 '2026-09-28'로 인용되며, MESSAGE는 들여쓰기된 두 줄이 있는 |- 블록을 사용합니다. 각 선택은 원래 유형을 보호합니다. compose.yaml로 저장하기 전에 패널의 왕복 확인을 실행하세요. 변환기는 이미지가 존재하는지 또는 서비스가 시작되는지 알 수 없습니다.

여기서 다루지 않는 내용 - 주석, 앵커 또는 사용자 정의 키 순서를 추가합니다. 이 중 JSON 소스에는 이월할 항목이 없습니다.

JSON에는 보존할 주석, 앵커 또는 별칭이 없습니다. 변환기는 이를 포함하지 않은 입력에서 이를 복구할 수 없습니다. 또한 Compose 관련 비밀 관리, 맞춤 키 순서 또는 Kubernetes API 버전 유효성을 추론할 수 없습니다. 두 개의 YAML 파일은 동일한 데이터를 직렬화하지만 서로 다른 공백과 인용 스타일을 사용할 수 있습니다. 대상 프로그램에서 결과를 검토하고 실제 API 토큰을 외부 변환 서비스에 붙여넣지 마십시오.

요약: 변환은 규칙을 사용한 재직렬화이며 구문 변환기 패널이 브라우저에서 YAML을 생성하는 방법입니다.

변환은 구두점 삭제가 아닌 일련의 규칙에 따라 구문 분석 및 재직렬화됩니다. 구문 변환기는 브라우저에서 해당 작업을 수행합니다. 더 큰 파일에 메서드를 적용하기 전에 민감한 구성을 로컬에서 검사하고 작은 테스트 개체에 대해 왕복을 실행합니다. 인용된 값이 도중에 유형을 변경하는 경우 서식은 단순히 외관상의 문제가 아니므로 조사가 필요합니다.