유틸

CSV ↔ JSON 변환

표 데이터를 JSON으로, JSON을 CSV로 바꿉니다.

작동 원리

CSV와 JSON 변환

변환 예시

CSV → JSON (첫 행을 헤더로 사용)

name,dept,amount
김오피스,개발,1200000
이데이터,영업,950000
[
  { "name": "김오피스", "dept": "개발", "amount": "1200000" },
  { "name": "이데이터", "dept": "영업", "amount": "950000" }
]

자주 쓰는 옵션

  • 첫 행을 헤더로 — 끄면 행 배열 그대로 JSON으로 만듭니다.
  • 숫자·불리언 자동 변환 — “1200000”을 숫자로. 00123 같은 코드는 문자열로 유지합니다.
  • 중첩 객체 평탄화 — { user: { name } }를 user.name 열로 만듭니다.
  • 구분자 — 세미콜론·탭으로 구분된 CSV도 처리합니다.

알아두세요

  • CSV는 평면 구조라 중첩 객체를 표현할 수 없습니다. 배열·객체 값은 JSON 문자열로 저장됩니다.
  • JSON → CSV는 객체 배열만 지원합니다. 최상위가 객체 하나면 배열로 감싸세요.
  • 헤더가 비어 있거나 중복되면 열1, 이름_2처럼 자동 보정합니다.
  • 20MB를 넘는 파일은 브라우저 메모리 부족으로 실패할 수 있습니다.
  • EUC-KR CSV는 인코딩을 직접 선택해야 할 수 있습니다.

파일은 서버로 가지 않습니다

CSV 파싱과 JSON 변환이 모두 브라우저에서 실행됩니다. 거래내역·고객명단 같은 데이터도 서버에 올리지 않고 변환할 수 있습니다. 자세한 원리는 작동 원리에 정리했습니다.

자주 묻는 질문

숫자가 문자열로 나옵니다.

기본값은 원본 CSV 값을 그대로 문자열로 유지합니다. “숫자·불리언 자동 변환”을 켜면 1200000 → 1200000, true → true로 바뀝니다. 00123 같은 코드는 문자열로 유지합니다.

중첩된 JSON도 CSV로 만들 수 있나요?

네. “중첩 객체 평탄화”를 켜면 { user: { name } }이 user.name 열로 바뀝니다. 배열은 JSON 문자열로 저장됩니다.

헤더가 중복되면 어떻게 되나요?

이름_2, 이름_3처럼 자동으로 번호를 붙입니다. 빈 헤더는 열1, 열2로 채웁니다.

CSV 한글이 깨집니다.

CSV 인코딩을 EUC-KR로 바꿔 파일을 다시 열어 보세요. 자동 모드는 UTF-8을 먼저 시도하고 실패하면 EUC-KR로 읽습니다.

참고

이 결과는 참고용입니다. 실제 업무 문서의 규격·보안 정책은 소속 기관의 안내를 우선하세요.