변환기
데이터 형식 사이의 변환은 결코 순수한 번역이 아닙니다. 같은 관념의 집합을 담는 형식은 둘이 없기 때문입니다. CSV에는 중첩이 없고, XML에는 배열이 없고, YAML에는 JSON이 지키지 못하는 주석이 있고, TypeScript에는 JSON이 실어 나르지 않는 타입이 있습니다.
여기 있는 모든 변환기는 그 결정을 명시적으로 내리고, 여러분의 문서에 적용된 것을 보고합니다. 배열을 한 칸에 평탄화하는 변환기도, 뒤쪽 레코드에서만 나타난 열을 버리는 변환기도, 우편번호를 더 작은 숫자로 바꾸는 변환기도 그렇다고 말해야 합니다. 대부분은 말하지 않습니다.
양방향
왕복이 무손실인 것은 일정한 한계 안에서뿐이고, 각 페이지가 자기 한계를 밝힙니다.
JSON과 CSV
JSON과 YAML
한 방향
어떤 변환이 무엇을 잃는가
| 변환 | 살아남지 못하는 것 |
|---|---|
| JSON → CSV | 중첩. 평탄화하지 않으면 잃습니다. 타입 정보도. CSV에는 타입이 없으니까요. |
| CSV → JSON | 전부 문자열로 유지한다면 아무것도. 타입 추론을 켜는 순간부터 데이터가 상합니다. |
| YAML → JSON | 주석은 영구히. 앵커는 그 자리에서 펼쳐집니다. 타임스탬프는 문자열이 됩니다. |
| XML → JSON | 혼합 콘텐츠의 순서, 네임스페이스로서의 네임스페이스, 그리고 원소 하나와 원소 하나짜리 목록의 차이. |
| JSON → XML | 유효한 XML 이름이 아닌 키 이름은 다시 쓰이고 되돌아오지 않습니다. |
| JSON → TypeScript | 런타임에서는 전부. 타입은 코드가 컴파일될 때 지워집니다. |