JSON ↔ YAML과 XML 변환의 경계
JSON이 YAML의 부분 집합이라는 주장은 한 방향만 보장하며, XML에는 공식 JSON 매핑이 전혀 없어 모든 것이 관례에 달려 있습니다.
JSON과 YAML, XML, CSV, TypeScript, Java, Go, SQL 사이의 변환은 결코 무손실이 아닙니다. 중요한 것은 손실이 어디서 일어나는지 명시하는 것입니다.
8개 문서JSON이 YAML의 부분 집합이라는 주장은 한 방향만 보장하며, XML에는 공식 JSON 매핑이 전혀 없어 모든 것이 관례에 달려 있습니다.
CSV는 이차원이고 JSON은 트리 모양입니다. 변환의 어려운 점은 코드가 아니라, 배열을 어떻게 평탄화하고 타입을 어떻게 보존할지 미리 결정하는 것입니다.
중첩 구조, 고르지 않은 필드, 배열의 배열이 JSON-to-스프레드시트 변환이 깨지는 지점입니다. 결과까지의 시간 순으로 정렬한 네 가지 접근과 각각의 절충을 다룹니다.
JSON을 SQL INSERT로 바꾸면 중첩 테이블 분할, NULL 대 누락, 이스케이프, 방언 격차가 숨습니다. 함정마다 실행 가능한 문과 비교 표를 제공합니다.
샘플 JSON에서 인터페이스를 생성하는 것은 절반의 일입니다. 선택 필드, null, 유니언, 날짜, 큰 정수는 사람이 손봐야 하며, 타입은 런타임 검증을 하지 않습니다.
튜토리얼에서 가장 자주 등장하는 yq -P input.json > output.yaml은 실측에서도 여전히 JSON을 출력합니다. 이 글은 yq v4.44.6, PyYAML 6.0.3, js-yaml을 2.39 MB 샘플에 돌려 출력 형식이 확장자로 결정된다는 사실을 네 세트의 데이터로 보여주고, 일괄 변환·따옴표·들여쓰기·큰 정수 정밀도의 올바른 작성법을 제시합니다.
실제 컨버터로 아홉 가지 실험을 수행했습니다. 첫 행 키 방식은 필드를 조용히 유실하고, null·누락·빈 문자열은 모두 빈 셀이 되며, 20자리 정수는 JSON.parse 단계에서 이미 정밀도를 잃고, 점이 포함된 키는 서로 다른 경로를 한 열로 충돌시킵니다. 헤더 생성 방법, 값의 변형, 다운스트림 용도별 전략 선택을 설명합니다.
이 사이트 생성기로 JSON → Java의 기본 출력을 실측했습니다——숫자는 Double, 중첩 객체는 static 내부 클래스, Jackson 어노테이션은 하나도 생성되지 않습니다. 금액 정밀도, 필드 이름 매핑, 제네릭 소거, 알 수 없는 필드, 날짜와 기본 생성자까지 다섯 가지를 복사해 쓸 수 있는 코드와 함께 정리했습니다.