CSV ↔ JSON 변환기
CSV를 JSON으로, JSON을 CSV로 변환합니다. 따옴표로 감싼 필드, 구분자 내 쉼표/줄바꿈도 올바르게 처리합니다. 서버로 전송하지 않고 브라우저 안에서만 처리되며, 2MB가 넘는 CSV 파일은 자동으로 스트리밍 모드로 전환되어 탭이 멈추지 않습니다.
이 배너는 쿠팡 파트너스 활동의 일환으로 게재되며, 이에 따른 일정액의 수수료를 제공받습니다.
사용 방법
- 모드 선택: "CSV → JSON" 또는 "JSON → CSV"를 선택하세요.
- 옵션: 구분자(쉼표/탭/세미콜론)를 선택하고, CSV 첫 행이 헤더라면 "첫 행을 헤더로 사용"을 켜세요(기본 켜짐).
- 입력: 왼쪽에 CSV 또는 JSON 텍스트를 붙여넣거나, "파일 열기"로
.csv/.json파일을 열거나 드래그하세요. - 결과 확인: 오른쪽에 변환 결과가 표시됩니다. 복사하거나 파일로 다운로드할 수 있습니다.
모든 처리는 브라우저 내부(JavaScript)에서만 이루어지며, 입력한 데이터는 서버로 전송되거나 저장되지 않습니다. CSV의 모든 값은 문자열로 처리됩니다(예: 001 같은 값이 숫자로 바뀌어 손실되는 것을 방지).
대용량 파일 모드
"파일 열기"나 드래그로 연 CSV 파일이 2MB보다 크면 자동으로 스트리밍 모드로 전환됩니다. 파일 전체를 메모리에 문자열로 올리는 대신 File.stream()으로 조금씩 읽어가며 한 행씩 바로 JSON으로 변환하기 때문에, 수십만 행짜리 CSV를 열어도 탭이 멈추거나 죽지 않습니다. 이 모드에서는 입력창에 원본 파일의 앞부분만 미리보기로 표시되고, 변환이 끝나면 결과창에도 처음 50행만 보여줍니다 — 전체 결과는 "다운로드" 버튼으로 받아야 합니다(용량이 커서 복사 대신 파일로 내려받도록 안내합니다). 이 스트리밍 파서를 만든 과정과 실제로 잡은 버그가 궁금하다면 대용량 CSV 스트리밍 가이드를 참고하세요.
변환 규칙
CSV → JSON: 헤더 사용 시 각 행이 {"열이름": "값", ...} 객체가 되고, 헤더 미사용 시 각 행이 문자열 배열이 됩니다. 큰따옴표로 감싼 필드 안의 구분자·줄바꿈·이스케이프된 큰따옴표("")를 올바르게 처리합니다.
JSON → CSV: 최상위 값이 객체 배열이면 모든 객체에 등장하는 키의 합집합을 헤더로 사용합니다. 문자열 배열의 배열이면 그대로 행으로 사용합니다. 값에 구분자, 줄바꿈, 큰따옴표가 있으면 자동으로 큰따옴표로 감쌉니다.
자주 묻는 질문
입력한 데이터가 외부로 전송되나요?
아니요. 모든 변환은 브라우저 안에서 JavaScript로만 처리되며 서버로 전송되지 않습니다.
숫자나 true/false가 문자열로 나와요.
의도된 동작입니다. CSV → JSON 변환 시 모든 값을 문자열로 유지해, 우편번호(001)처럼 앞의 0이 사라지는 문제를 방지합니다. 숫자형이 필요하면 결과를 JSON 포맷터 등에서 후처리하세요.
JSON → CSV에서 어떤 JSON 구조를 지원하나요?
최상위 값이 배열이어야 합니다. 객체 배열([{"a":1}, ...]) 또는 배열의 배열([["a","b"], ...])을 지원합니다. 중첩된 객체/배열 값은 셀 안에 JSON 문자열로 그대로 들어갑니다.
엑셀에서 만든 CSV도 열리나요?
대부분 가능합니다. 구분자가 쉼표가 아니라면(일부 로캘의 엑셀은 세미콜론 사용) 상단에서 구분자를 세미콜론으로 바꿔주세요.
엑셀에서 CSV를 열었더니 한글이 깨져요.
이 도구가 만드는 CSV 자체는 UTF-8입니다. 엑셀(특히 Windows 버전)은 CSV를 열 때 기본적으로 시스템 로캘(EUC-KR 등)로 해석하는 경우가 많아 한글이 깨져 보일 수 있습니다. 엑셀에서는 "데이터 → 텍스트/CSV에서" 메뉴로 열면서 인코딩을 UTF-8로 지정하거나, 메모장 등에서 파일 맨 앞에 UTF-8 BOM을 추가하면 대부분 해결됩니다.
숫자에 천 단위 쉼표(1,000)가 있으면 어떻게 되나요?
쉼표가 구분자와 겹치기 때문에, 그런 값은 CSV에서 반드시 큰따옴표로 감싸야 합니다(예: "1,000"). 이 도구는 큰따옴표로 감싸진 필드 안의 쉼표를 올바르게 인식하지만, 원본 CSV 자체에 따옴표 없이 쉼표가 섞여 있다면 열이 잘못 나뉠 수 있습니다.
몇백 MB짜리 CSV도 변환할 수 있나요?
네. 2MB를 넘는 CSV 파일은 자동으로 스트리밍 모드로 처리되어, 파일을 전부 메모리에 올리지 않고 조금씩 읽으며 변환합니다. 다만 JSON → CSV 방향(반대 방향)은 현재 스트리밍을 지원하지 않으며, 텍스트로 직접 붙여넣은 CSV(파일이 아닌 경우)도 일반 모드로 처리됩니다.