CSV → JSON 변환기
왼쪽에 CSV(또는 TSV)를 붙여넣으면 오른쪽에 객체 배열 형태의 JSON이 만들어져요. 헤더는 자동으로 인식되고, 숫자와 부울 값도 알아서 타입이 정해집니다. 모든 처리는 브라우저 안에서 이뤄지며 업로드가 없어요.
- 왼쪽 텍스트 영역에 CSV를 붙여넣어 주세요.
- "JSON으로 변환" 버튼을 누르면 첫 번째 행이 헤더로 사용됩니다.
- 결과를 복사하거나 data.json 파일로 다운로드할 수 있어요.
- 탭으로 구분된 TSV 등 다른 구분자도 PapaParse가 자동으로 감지합니다.
어떤 도구인가요?
CSV(RFC 4180 형식과 유사)를 객체 배열 형태의 JSON으로 변환합니다. 각 객체의 키는 헤더 행과 일치해요. 따옴표로 감싼 필드, 콤마가 포함된 값, 두 번 이은 큰따옴표 이스케이프, CRLF/LF 줄 바꿈 등 일반적인 CSV 변형이 모두 지원됩니다. 구분자는 자동으로 감지되므로 콤마, 탭, 세미콜론, 파이프(|) 어떤 것이든 그대로 붙여넣을 수 있어요.
예시
CSV 입력:
name,age,role
Ada,36,engineer
Grace,40,scientist JSON 출력:
[
{"name": "Ada", "age": 36, "role": "engineer"},
{"name": "Grace", "age": 40, "role": "scientist"}
] 자주 만나는 CSV 함정과 대처법
CSV는 단순해 보이지만 의외로 까다로운 경우가 많아요. 결과가 예상과 다를 때 살펴봐야 할 패턴들입니다.
- 따옴표 없이 콤마가 포함된 값. `Smith, John` 처럼 따옴표 없이 콤마가 들어간 값은 두 컬럼으로 잘려요. 큰따옴표로 감싸세요: `"Smith, John"`.
- 값 안의 큰따옴표. 따옴표로 감싼 값 안에서 큰따옴표는 두 번 연속해서 이스케이프해요: `"He said ""hi"""` 는 `He said "hi"` 가 됩니다. 백슬래시 이스케이프(`\"`)는 표준이 아니고 지원되지 않아요.
- 컬럼 수가 일정하지 않음. 헤더보다 컬럼이 적은 행은 빠진 키가 null이 되고, 더 많은 행은 파싱 경고로 보고돼요. 변환은 완료되지만 결과를 한번 확인해 보세요.
- 0으로 시작하는 ID가 사라짐. `007` 은 문자열 "007"이 아니라 숫자 7로 변환돼요. 우편번호나 전화번호처럼 앞의 0이 의미가 있다면 입력을 따옴표로 감싸 두고, 다운스트림 코드에서 동적 타입 변환을 끄는 식으로 처리해야 합니다.
- 파일 시작 부분의 BOM. Excel에서 저장한 CSV는 UTF-8 BOM(`\uFEFF`)을 포함하는 경우가 많아요. 파서가 자동으로 제거하지만, 헥스 에디터로 직접 보면 첫 헤더 앞에 이상한 문자처럼 보일 수 있어요.
- 줄 바꿈이 섞임. CRLF(Windows), LF(Unix), CR(구형 Mac) 모두 인식돼요. 결과가 한 행으로 길게 나온다면 파일에 줄 바꿈이 아예 없는 경우일 수 있어요. 보통 `\n` 없이 문자열을 이어붙여 만든 CSV에서 발생합니다.
자주 묻는 질문
탭으로 구분된 값(TSV)도 지원하나요?
네. PapaParse가 입력 첫 1KB 정도를 보고 구분자를 자동으로 감지해요. 탭, 세미콜론, 파이프, 콤마 모두 별도 설정 없이 동작합니다. 드물게 잘못 감지하는 경우 필드 구분을 더 명확하게 하거나 입력을 정리해서 다시 붙여넣어 보세요.
헤더 행이 없는 CSV는 어떻게 하나요?
현재 설정은 첫 행을 헤더로 가정해요. 헤더가 없는 CSV라면 `a,b,c` 같은 임시 헤더 행을 앞에 추가해 주세요. 배열-배열 형태가 필요하면 명령줄에서 `header: false` 로 PapaParse를 직접 사용하는 편이 나아요.
날짜는 어떻게 변환되나요?
문자열 그대로 유지됩니다. 자동 타입 변환은 숫자와 부울에만 적용해요. 날짜 형식은 모호한 경우가 많아서 (`01/02/03` 이 1월 2일인지 2월 1일인지) 의도적으로 자동 파싱하지 않아요. 출처의 형식을 알고 있는 다운스트림 코드에서 처리하세요.
아주 큰 CSV 파일도 변환되나요?
약 50 MB까지는 무리 없이 동작하지만, 그 이상은 텍스트 영역 자체가 느려져요. 파서는 그보다 훨씬 큰 데이터도 처리할 수 있으니, 더 큰 파일은 명령줄에서 PapaParse를 직접 쓰는 편이 빠릅니다.
CSV가 어디론가 업로드되나요?
아니요. 모든 처리는 브라우저 안에서 진행돼요. 변환 버튼을 눌러도 네트워크 요청이 발생하지 않는 것을 개발자 도구의 네트워크 탭에서 직접 확인할 수 있어요.
중첩된 구조나 그룹화된 JSON은 어떻게 만들죠?
이 도구는 평면 객체 배열만 만들어요. CSV 자체가 평면 구조이기 때문이에요. 중첩 구조가 필요하면 변환 후 별도 스크립트로 후처리하세요. CSV에 계층을 억지로 넣으려 하면 보통 문제가 더 커집니다.