데이터 형식 변환은 개발자가 매일 마주하는 작업이에요. JSON·YAML·XML은 같은 데이터를 다르게 표현하는 형식이고, 각자 사용처가 달라서 변환 도구는 필수입니다.
세 가지 형식의 특징
JSON(JavaScript Object Notation): 가장 가벼운 형식으로 API 응답·웹 데이터에 가장 많이 쓰여요. YAML(YAML Ain't Markup Language): 사람이 읽기 좋아 설정 파일(Docker, Kubernetes)에 자주 쓰여요. XML(Extensible Markup Language): 가장 오래된 형식으로 SOAP API·구식 시스템에 쓰입니다. JSON 포맷터에서 JSON 정렬·압축이 가능해요.
JSON → YAML 변환 케이스
Kubernetes 설정을 JSON에서 YAML로 변환하는 케이스가 가장 흔해요. CI/CD 파이프라인에서 JSON으로 받은 설정을 YAML로 저장해 사람이 읽기 좋게 만드는 패턴이 일반적입니다. 또 Docker Compose 파일도 YAML이 표준이에요.
YAML → JSON 변환 케이스
API에 데이터를 전송할 때 YAML로 작성한 설정을 JSON으로 변환합니다. 대부분의 REST API는 JSON을 표준으로 받기 때문이에요. 또 JavaScript 환경에서는 YAML보다 JSON 파싱이 표준 라이브러리로 가능해 처리 속도가 빠릅니다.
XML → JSON 변환 케이스
구식 시스템(은행, 정부 시스템)이 SOAP API로 XML을 반환할 때 모던 프론트엔드는 JSON으로 변환해 사용해요. 또 RSS 피드(XML 기반)를 파싱해 JSON으로 저장하는 패턴도 흔합니다. 변환 시 "속성(attribute)"과 "자식 요소(child)"의 구분에 주의하세요.
정렬·압축 활용
개발 환경에서는 "정렬된 JSON"이 가독성이 좋고, 운영 환경에서는 "압축된 JSON"이 네트워크 전송 비용을 줄여요. 같은 데이터도 정렬 시 1KB, 압축 시 600B로 줄어들 수 있습니다. CDN·CloudFront 캐시에는 압축 JSON을 사용하는 것이 효율적이에요.
데이터 검증 - JSON Schema
JSON Schema는 JSON 데이터의 구조를 정의하는 표준이에요. API 응답이 예상한 형식에 맞는지 자동 검증할 수 있어 "필드 누락" 같은 버그를 방지합니다. 큰 프로젝트에서는 JSON Schema를 기반으로 자동 타입 생성 도구(Quicktype)를 활용하면 TypeScript·Python 타입 코드를 자동 생성할 수 있어요.
보안 고려사항
외부에서 받은 JSON을 그대로 파싱하면 "JSON 인젝션" 공격 위험이 있어요. 특히 eval() 함수를 사용한 파싱은 절대 금물이고, 표준 JSON.parse()를 사용해야 합니다. 또 XML은 "XML External Entity (XXE)" 공격 위험이 있어 외부 엔터티 처리를 비활성화하는 것이 안전해요.
자동화 - jq·yq 명령어
터미널에서 JSON 처리는 "jq", YAML 처리는 "yq"가 표준 도구예요. 예: cat data.json | jq '.users[].name'은 JSON에서 모든 사용자 이름만 추출합니다. CI/CD 스크립트에서 자주 활용되는 강력한 도구이니 익혀 두면 효율이 크게 올라가요. 텍스트·문서 도구에서 더 많은 변환 도구를 확인할 수 있어요.


