왜 CSV를 JSON으로 변환하는가
CSV는 표 데이터 형식이며 Excel 내보내기의 기본 형식입니다. JSON은 프로그램 친화적 형식이자 API 전송의 표준입니다. CSV를 JSON으로 변환하면 표 데이터를 프로그램이 직접 소비할 수 있습니다.
흔한 시나리오:
- Excel 데이터를 웹사이트 데이터베이스로 가져오기
- 표 데이터를 API와 연동
- 데이터 분석 결과를 프론트엔드에 전달해 렌더링
- 설정을 표에서 JSON 파일로 마이그레이션
CSV와 JSON의 차이
CSV 형식
name,age,city
Tom,25,베이징
Jerry,30,상하이
- 순수 텍스트, 쉼표로 구분
- 첫 행은 헤더
- 한 행에 한 레코드
- 타입 없음(모두 문자열)
- 중첩 구조 없음
JSON 형식
[
{"name": "Tom", "age": 25, "city": "베이징"},
{"name": "Jerry", "age": 30, "city": "상하이"}
]
- 구조화, 키-값 쌍
- 타입 있음(문자열, 숫자, 불리언)
- 중첩 지원
- 프로그램이 직접 파싱
변환 원리
헤더 매핑
CSV 첫 행은 헤더이며 JSON 변환 시 헤더가 객체의 키가 됩니다:
- 헤더: name, age, city
- 첫 행 데이터: Tom, 25, 베이징
- 변환: {"name": "Tom", "age": "25", "city": "베이징"}
데이터 유형 인식
CSV의 모든 값은 문자열입니다. JSON 변환 시 유형을 스마트하게 인식할 수 있습니다:
- 숫자: "25" → 25(숫자)
- 불리언: "true" → true(불리언)
- 널값: "" → null(널)
- 문자열: 문자열 유지
유형을 인식하지 않으면 전부 문자열로 처리합니다.
배열 생성
CSV 한 행당 객체 하나, 모든 행이 배열을 구성합니다:
[
{객체1},
{객체2}
]
중첩 구조
문제
CSV는 평면 표이고 JSON은 중첩을 지원합니다. 평면 CSV를 중첩 JSON으로 어떻게 변환할까요?
방법 1: 점 표기 키명
CSV 헤더에 점으로 계층을 표시합니다:
name,address.city,address.zip
Tom,베이징,100000
JSON 변환:
{
"name": "Tom",
"address": {
"city": "베이징",
"zip": "100000"
}
}
방법 2: 배열 인덱스
name,tags[0],tags[1]
Tom,A,B
JSON 변환:
{
"name": "Tom",
"tags": ["A", "B"]
}
방법 3: 세미콜론 구분
name,tags
Tom,"A;B;C"
JSON 변환:
{
"name": "Tom",
"tags": ["A", "B", "C"]
}
변환 단계
1. CSV 준비
CSV 형식이 올바른지 확인:
- 첫 행은 헤더
- 필드는 쉼표로 구분
- 쉼표가 포함된 필드는 큰따옴표로 감싸기
- 큰따옴표가 포함된 필드는 큰따옴표 두 개로 이스케이프
2. 업로드 또는 붙여 넣기
CSV 내용을 변환 도구에 붙여 넣거나 CSV 파일을 업로드합니다.
3. 옵션 설정
- 데이터 유형 인식 여부
- 중첩 구조 처리 방식
- 출력 형식(배열 또는 행별 객체)
4. 변환
도구가 자동 변환하여 JSON을 출력합니다.
5. 검증
JSON 결과가 예상과 맞는지 검사:
- 필드가 올바른가
- 유형이 올바른가
- 중첩이 올바른가
흔한 문제
쉼표가 포함된 필드
CSV 필드에 쉼표가 있으면 큰따옴표로 감싸야 합니다:
name,desc
Tom,"Hello, world"
감싸지 않으면 두 필드로 인식되어 변환 오류가 발생합니다.
한글 깨짐
CSV는 UTF-8 인코딩을 사용하세요. Excel 기본값이 GBK일 수 있으며 내보낼 때 UTF-8을 선택하세요.
널값 처리
CSV 빈 셀을 JSON으로 변환할 때 빈 문자열 ""인가, null인가?
- 기본값: 빈 문자열 ""
- 스마트 인식: null
- 도구 옵션 확인
숫자 정밀도
큰 숫자를 JSON으로 변환하면 정밀도가 손실될 수 있습니다. 예를 들어 18자리 신분증 번호는 숫자로 변환하면 과학적 표기법이 됩니다. 신분증 번호는 문자열로 처리하세요(CSV에서 인용 부호를 추가하거나 변환 시 문자열 유형 지정).
날짜 형식
CSV 날짜 형식이 통일되지 않습니다(2024-01-01, 2024/1/1, Jan 1 2024). JSON 변환 시 문자열로 유지하고 프론트엔드에서 다시 파싱하세요.
BOM 헤더
Excel에서 내보낸 CSV에 BOM 헤더(\uFEFF)가 있을 수 있어 첫 필드명 앞에 보이지 않는 문자가 생깁니다. 변환 도구는 BOM을 자동으로 제거해야 합니다.
변환 팁
CSV 전처리
변환 전에 Excel에서 정리:
- 빈 행 삭제
- 날짜 형식 통일
- 필드 완전성 검사
선택적 변환
필요한 열만 변환하세요. 불필요한 열은 CSV에서 삭제하여 JSON 크기를 줄입니다.
분할 변환
초대형 CSV를 한 번에 변환하면 버벅거릴 수 있습니다. 분할하여 변환하세요(몇백 행씩).
결과 검증
변환 후 JSON 포맷팅 도구로 미화하고 몇 건을 수동으로 확인하세요.
DocsAll로 변환
- CSV 파일 업로드 또는 CSV 내용 붙여 넣기
- 도구가 자동으로 헤더와 데이터 파싱
- 변환 옵션 설정(유형 인식 등)
- JSON 생성
- 결과 복사 또는 다운로드
브라우저에서 변환되며 CSV 데이터는 서버에 업로드되지 않아 민감한 데이터 처리에 적합합니다.
역방향 변환: JSON to CSV
때로는 역방향으로 JSON을 CSV로 변환해야 합니다:
- API가 JSON을 반환하고 Excel로 내보내 분석
- 데이터베이스 JSON 필드를 표로 내보내기
JSON to CSV의 어려운 점:
- 중첩 구조 평탄화
- 배열 필드 처리(이어 붙이기 또는 여러 행 전개)
- 필드가 통일되지 않을 때 빈값 보정
요약
CSV to JSON의 핵심은 헤더 매핑으로 키명 지정, 데이터 유형 인식, 중첩 구조 처리입니다. 쉼표가 포함된 필드, 한글 인코딩, 널값과 큰 숫자 정밀도에 주의하세요. DocsAll CSV to JSON 도구는 브라우저에서 실행되어 데이터가 외부로 전송되지 않습니다.