CSV와 JSON, 무엇이 다른가?
CSV(Comma-Separated Values)는 표 형태의 데이터를 텍스트로 표현하는 가장 오래된 형식으로, 1972년부터 사용되어 엑셀·Google Sheets·통계 프로그램의 표준 입출력 형식입니다.JSON(JavaScript Object Notation)은 2001년 더글라스 크록포드가 정립한 형식으로, 키-값·중첩·배열을 표현할 수 있어 웹 API·NoSQL DB·설정 파일에 널리 쓰입니다. 두 형식은 서로 호환되지만 변환 시 구분자 선택, 따옴표 이스케이프, 줄바꿈 포함 필드, 한글 인코딩에서 자주 문제가 발생합니다. 본 도구는 RFC 4180 표준에 맞춘 안전한 CSV 파싱(따옴표 안의 쉼표·줄바꿈 허용)과 JSON.parse 기반 변환을 제공해 엑셀에서 내보낸 CSV, 웹 API에서 받은 JSON 모두 정확히 상호 변환할 수 있습니다. 모든 처리는 브라우저에서 이뤄져 민감한 고객 명단·매출 데이터도 안전합니다.
CSV ↔ JSON 변환 활용 사례
- • 엑셀 → 웹 API — 엑셀로 작성한 상품·고객 데이터를 JSON으로 변환해 백엔드에 일괄 업로드.
- • API 응답 → 엑셀 분석 — 서버에서 받은 JSON 응답을 CSV로 변환해 엑셀에서 피벗·차트로 분석.
- • 데이터 마이그레이션 — 구 시스템(CSV 기반) → 신 시스템(JSON 기반) 이전 시 일괄 변환.
- • 노션·에어테이블 가져오기 — 양쪽 모두 CSV 가져오기 지원. JSON 형태 데이터를 변환 후 import.
- • 개발자 더미 데이터 — JSON으로 작성한 mock 데이터를 CSV로 변환해 DB 시드, 또는 그 반대.
- • 설문조사 분석 — Google Forms CSV 응답을 JSON으로 변환해 분석 스크립트에 입력.
CSV 변환 시 주의할 점
| 함정 | 증상 | 해결 |
|---|---|---|
| 필드 안 쉼표 | "서울, 강남구" 가 두 칼럼으로 잘림 | " 로 감싸서 입력 |
| 한글 깨짐 | 엑셀에서 ??? 표시 | UTF-8 BOM 추가 또는 EUC-KR 저장 |
| 줄바꿈 필드 | 한 행이 여러 행으로 분리 | " 안에 줄바꿈 보존 |
| 선행 0 손실 | "01012345678" → 1012345678 | 엑셀에서 텍스트 형식 지정 |
| 날짜 자동 변환 | 2024-01-02 → 2024년 1월 2일 | ' 접두 또는 텍스트 형식 |
| 구분자 차이 | 유럽 CSV는 세미콜론 | 본 도구의 구분자 옵션 변경 |
자주 묻는 질문 (FAQ)
Q. JSON이 중첩 객체일 때도 CSV로 변환되나요?
A. 본 도구는 1단 평면 객체 배열만 지원합니다. 중첩 구조(예: address.city)는 [object Object]로 표시되니 JSON을 미리 평탄화(flatten)한 뒤 변환하세요. 평탄화는 lodash·json2csv 라이브러리 또는 수작업으로 처리합니다.
Q. CSV의 첫 줄을 헤더로 인식하지 않게 하려면?
A. CSV → JSON 옵션의 "첫 행을 헤더로 사용" 체크를 해제하면 col0, col1, ... 형태의 자동 키가 생성됩니다. 헤더가 없는 raw 데이터를 그대로 객체화할 때 사용하세요.
Q. 엑셀 파일(.xlsx)도 직접 변환되나요?
A. 본 도구는 텍스트 기반 CSV만 지원합니다. .xlsx는 엑셀에서 "파일 → 다른 이름으로 저장 → CSV(쉼표로 분리)"로 먼저 내보낸 뒤 사용하세요. 엑셀 한글 CSV는 EUC-KR로 저장될 수 있어 UTF-8로 다시 저장하면 깨짐 없이 처리됩니다.
Q. 큰 파일(수만 행)도 변환 가능한가요?
A. 1만 행 정도까지는 즉시 처리되며, 10만 행 이상은 브라우저가 잠시 멈출 수 있습니다. 대용량은 Python pandas, Node.js papaparse 같은 도구를 권장합니다.
Q. 입력한 데이터가 외부로 전송되나요?
A. 아니요. 모든 변환은 브라우저에서만 수행되며 서버로 전송되지 않습니다. 고객 명단·매출·개인정보 데이터도 안전합니다.