§

JSON으로 변환하려는 CSV를 붙여넣으세요.

구분자
첫 행을 헤더로
타입 추론
§

Output

json

국내 데이터 업무에서 CSV를 JSON으로 변환하는 작업은 매일 일어납니다. 공공데이터포털 data.go.kr에서 내려받는 행정안전부·국토부 데이터셋과 KOSIS(한국통계정보서비스)에서 일괄 다운로드되는 인구·경제 통계는 대부분 CSV로 배포되며, BigQuery·Snowflake로 적재하기 전 단계에서 JSON으로 변환됩니다. 한국은행 경제통계시스템 ECOS의 시계열 데이터, 국세청 NTS의 사업자등록정보 CSV, 금융감독원 DART의 공시 데이터도 같은 흐름을 거칩니다. KISA의 PIPA 가이드라인이나 KISO 권고를 따르는 핀테크·헬스케어 현장에서는 외부 SaaS 변환기에 민감 데이터를 붙여 넣을 수 없으므로, 이 도구처럼 브라우저 안에서 완결되는 변환이 표준 운영 절차에 부합합니다.

CSV → JSON 변환이란 무엇인가요?

CSV(Comma-Separated Values, RFC 4180)는 납작한 표 형식의 텍스트 형식이고, JSON(JavaScript Object Notation, RFC 8259)은 구조화된 데이터를 위한 트리 형태의 텍스트 형식입니다. CSV를 JSON으로 변환하면 스프레드시트에 친화적인 표가 API에 친화적인 객체 배열로 변환됩니다 — 한 행이 하나의 객체, 헤더 행이 키를 제공하며, 셀을 다시 입력할 필요가 없습니다.

CSV → JSON 변환은 어떻게 작동하나요?

모든 변환은 브라우저에서 로컬로 실행됩니다. 큰 흐름은 다음과 같습니다:

  1. CSV를 입력 패널에 붙여넣고 변환을 누르면, 도구가 텍스트를 파싱하고 JSON 객체 배열을 출력 패널에 표시합니다.
  2. 문자 단위 상태 머신(FIELD_START → IN_UNQUOTED_FIELD 또는 IN_QUOTED_FIELD)이 입력을 따라가면서 "" 인용 부호 이스케이프를 지키고, \r\n\n을 모두 행 종결자로 인식하며, 중간 표현으로 2차원 문자열 배열을 만듭니다.
  3. 첫 행이 헤더로 지정된 경우 해당 셀이 객체 키가 됩니다. 그렇지 않으면 도구가 합성 키 field0, field1, …을 생성하여 모든 행이 완전한 객체에 매핑되도록 합니다.
  4. 구분자(쉼표, 세미콜론, 탭, 파이프 또는 자동 감지)와 타입 추론(숫자 / 불리언 / null)은 모두 설정할 수 있습니다. 추론이 켜지면 30은 숫자 30이 되고 true는 불리언이 됩니다. 꺼지면 각 셀은 문자열로 유지됩니다.
  5. 결과는 JSON.stringify 형식의 텍스트로 읽기 전용 텍스트 영역에 기록되고, 다운로드 링크는 MIME 타입 application/json;charset=utf-8Blob을 만들어 한 번의 클릭으로 결과를 저장할 수 있게 합니다.

이 도구로 CSV를 JSON으로 변환해야 하는 이유는?

  • 프라이버시: 모든 파싱과 변환 과정이 브라우저에서 일어납니다. 데이터는 절대 서버에 도달하지 않습니다.
  • 정확성: CSV 파서는 진짜 상태 머신입니다. 인용된 쉼표("Bob, Jr."), 내부 줄바꿈, 이스케이프된 인용 부호가 들어 있는 필드는 세 칸이 아니라 한 칸으로 파싱됩니다 — 단순한 split(',') 구현은 모두 여기에서 틀립니다.
  • 타입 충실도: 선택적 타입 추론이 숫자 및 불리언 셀을 실제 JSON 숫자와 불리언으로 변환하므로, 얻은 배열을 두 번째 정리 없이 바로 사용할 수 있습니다.
  • 유연성: 쉼표 이외의 CSV 방언을 위해 어떤 구분자든 선택할 수 있고, 첫 행을 헤더로 할지 선택할 수 있으며, 모든 셀이 문자열이어야 할 때는 타입 추론을 끌 수 있습니다.

CSV → JSON 변환의 일반적인 활용 사례는 무엇인가요?

CSV를 JSON으로 파싱하는 작업은 데이터 작업과 도구 작업 곳곳에서 등장합니다:

  • API 모킹: 스프레드시트에서 내보낸 CSV 픽스처를 붙여넣어 JSON 배열로 변환한 뒤, 로컬 서버가 모킹된 엔드포인트로 응답하게 합니다.
  • 데이터 가져오기: 스프레드시트 내보내기(연락처, 재고, 설문 결과)를 CSV 파서 의존성 없이 애플리케이션이나 스크립트가 순회할 수 있는 JSON 배열로 변환합니다.
  • 설정 편집: 비기술 검토자가 스프레드시트에서 설정이나 기능 플래그를 셀 단위로 편집한 뒤, 저장된 CSV를 앱이 실제로 로드하는 JSON으로 변환합니다.

CSV → JSON 변환 예시는 어떻게 생겼나요?

첫 줄에 name,age, 두 번째 줄에 Alice,30, 세 번째 줄에 "Bob, Jr.",25를 붙여넣고 쉼표 구분자, 첫 행을 키로, 타입 추론 켜기로 변환을 누르면 [{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}]가 나옵니다 — "Bob, Jr."의 인용된 쉼표는 하나의 필드 안에 머물고, 나이는 실제 JSON 숫자가 됩니다.

이 CSV → JSON 변환기는 전적으로 브라우저에서 실행되나요?

네. 모든 파싱과 변환 과정이 브라우저 탭 안의 JavaScript로 로컬에서 실행됩니다. 이 도구는 fetch, XMLHttpRequest, navigator.sendBeacon을 전혀 호출하지 않습니다 — 여러분의 CSV 페이로드는 저희 서버, 제3자 변환 서비스, 어떤 분석 파이프라인에도 전달되지 않습니다. 페이지를 한 번 로드한 뒤에는 오프라인에서도 동작합니다. 런타임 API 의존성이 없는 정적 HTML/CSS/JS 번들이기 때문입니다.

이 변환기가 처리할 수 있는 최대 입력 크기는 얼마인가요?

변환기는 전체 입력을 메모리에 버퍼링하고 메인 스레드에서 동기적으로 실행하므로 실제 한계는 기기 성능에 좌우됩니다. 최신 노트북에서는 약 10 MB의 CSV(약 10만 건의 일반적인 레코드)를 눈에 띄는 지연 없이 변환합니다. 그 이상에서는 UI가 멈출 수 있습니다. Web Worker와 청크 파서를 활용한 스트리밍 변환은 다음 단계로 예정되어 있습니다 — 지금은 매우 큰 데이터셋은 붙여넣기 전에 잘라서 사용하세요.

CSV → JSON 파서는 인용된 쉼표와 내부 줄바꿈을 어떻게 처리하나요?

파서는 세 가지 상태(FIELD_START, IN_UNQUOTED_FIELD, IN_QUOTED_FIELD)를 가진 문자 단위 상태 머신이며, 단순한 split(',')이 아닙니다. 큰따옴표로 감싼 필드 안에는 구분자, CR, LF, 또는 ""로 이스케이프된 리터럴 큰따옴표가 들어 있어도 필드 경계가 깨지지 않습니다. 그래서 "Bob, Jr.",25는 세 필드가 아니라 두 필드로 파싱되며, 행을 가로질러 인용된 여러 줄짜리 설명도 단일 셀로 파싱됩니다.

숫자, 불리언, 빈 셀은 JSON 출력에서 어떻게 타입이 지정되나요?

타입 지정은 타입 추론 토글이 제어합니다. 추론이 켜짐(기본값)일 때 숫자처럼 보이는 셀은 JSON 숫자가 되고, true/false는 불리언이 되며, 리터럴 null은 JSON null이 됩니다. 나머지는 문자열로 유지됩니다. 추론이 꺼짐일 때는 내용에 관계없이 모든 값이 문자열로 유지됩니다 — 선행 0, 전화번호, ID 코드가 그대로 보존되어야 할 때 유용합니다. 짧은 행에서 누락된 끝 셀은 빈 문자열로 출력되어 모든 객체가 전체 키 세트를 갖추게 됩니다.

CSV 측은 어떤 구분자를 지원하나요?

네 가지 구분자를 명시적으로 지원합니다: 쉼표(,, RFC 4180 기본값), 세미콜론(;, 유럽 로케일에서 흔함), 탭(\t, TSV 방언), 파이프(|). 자동 감지도 선택할 수 있으며, 이는 입력의 처음 4 KB 중 인용 영역 밖에서 각 후보가 나타나는 횟수를 세어 첫 다섯 줄에서 열 수가 일관되게 유지되는 후보 중 가장 잦은 것을 고릅니다.

이 CSV → JSON 변환기는 진짜 상태 머신으로 파싱하고 깨끗한 즉시 사용 가능한 JSON을 만들어 API 호출, 스크립트, 코드 리뷰에 바로 붙여넣을 수 있게 합니다 — 단 한 바이트도 업로드하지 않고.