CSV는 기본적으로 평평한 표입니다
CSV는 행과 열로 구성된 2차원 구조라 한 셀에는 보통 하나의 값이 들어갑니다. 반면 JSON은 객체 안에 객체가 들어가거나 한 키가 배열을 가질 수 있어 구조의 깊이에 제한이 거의 없습니다.
그래서 JSON을 CSV로 바꿀 때는 중첩된 값을 `address.city`처럼 열 이름으로 펼칠지, 배열을 문자열로 묶을지, 행을 여러 개로 늘릴지 결정해야 합니다.
한 행이 무엇을 의미하는지 먼저 정하세요
주문 JSON 안에 고객 정보와 여러 상품 배열이 함께 있다면 주문 1건을 한 행으로 둘지 상품 1개를 한 행으로 둘지에 따라 CSV 구조가 완전히 달라집니다.
분석 목적이라면 보통 반복되는 단위가 한 행이 되도록 정하는 것이 편하지만, 원본 구조를 완벽히 보존하려면 CSV 자체가 적합하지 않을 수 있습니다.
누락 필드와 null은 빈 문자열과 다를 수 있습니다
JSON에서 키 자체가 없는 경우, 값이 null인 경우, 값이 빈 문자열인 경우는 의미가 다를 수 있습니다. CSV로 평탄화하면 세 경우가 모두 빈 셀처럼 보일 수 있어 정보가 줄어듭니다.
데이터 품질 검사가 필요하다면 변환 전에 이 세 상태를 구분해야 하는지 결정하세요. 필요하다면 별도 표시값을 두는 방식이 안전합니다.
CSV에서 JSON으로 돌아갈 때 원래 구조가 자동 복원되지는 않습니다
평탄화한 열 이름에 규칙이 없거나 배열을 문자열로 저장했다면 다시 JSON으로 바꿔도 원래 객체 구조를 정확히 재구성하기 어렵습니다. 변환은 항상 가역적이라고 생각하면 안 됩니다.
백업 목적이라면 원본 JSON을 그대로 보관하고 CSV는 분석·편집용 파생본으로 사용하는 것이 좋습니다.
- 행의 의미를 먼저 정의
- 중첩 객체의 펼침 규칙 결정
- null·누락·빈 문자열 구분 여부 결정
- 원본 JSON 별도 보관
직접 처리하기
JSON과 CSV를 서로 변환하기 전에 한 행이 무엇을 뜻하는지, 중첩 값을 어떤 열로 펼칠지 먼저 정하면 결과를 검토하기 쉽습니다.
JSON ↔ CSV 변환기 열기이 가이드의 기준
이 글은 실제 파일 구조와 omtools 도구의 동작 방식을 기준으로 작성했습니다. 중요한 원본은 별도로 보관하고, 변환이나 정리 후에는 결과를 다시 열어 구조와 값이 유지됐는지 확인하는 것을 권장합니다.