CSV → JSON 변환기

왼쪽에 CSV(또는 TSV)를 붙여넣으면 오른쪽에 객체 배열 형태의 JSON이 만들어져요. 헤더는 자동으로 인식되고, 숫자와 부울 값도 알아서 타입이 정해집니다. 모든 처리는 브라우저 안에서 이뤄지며 업로드가 없어요.

  1. 왼쪽 텍스트 영역에 CSV를 붙여넣어 주세요.
  2. "JSON으로 변환" 버튼을 누르면 첫 번째 행이 헤더로 사용됩니다.
  3. 결과를 복사하거나 data.json 파일로 다운로드할 수 있어요.
  4. 탭으로 구분된 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에 계층을 억지로 넣으려 하면 보통 문제가 더 커집니다.