도구

데이터 도구

CSV → JSON 변환기

CSV를 붙여넣거나 로컬 CSV 파일 하나를 선택하면 행을 JSON 객체나 배열로 바꿔요. 따옴표로 감싼 필드와 이스케이프된 따옴표까지 브라우저 안에서 처리해요.

입력

CSV 원본

결과

JSON 결과

헤더 행

첫 행에 열 이름이 있다면 헤더 옵션을 켜 두세요. 열 이름의 앞뒤 공백을 지우고 소문자로 바꾼 뒤 안전한 키로 정리해요. `Customer Name`은 `customer_name`, 빈 두 번째 열은 `column_2`, 중복된 키는 `_2` 같은 접미사가 붙어요. API나 가져오기 작업에 쓰기 전에 정리된 키를 확인해 주세요.

배열 모드

헤더가 없거나 열 이름보다 순서가 중요하면 헤더 옵션을 꺼 주세요. `Ada,admin,true` 같은 행은 같은 순서의 문자열 세 개를 담은 배열이 돼요. 따옴표 안의 쉼표, 두 번 쓴 큰따옴표, 따옴표로 감싼 필드 안의 줄바꿈은 새 열이나 행으로 나뉘지 않고 해당 필드에 남아요.

한계

CSV에는 공통 스키마가 없어서 모든 셀을 문자열로 유지해요. `42`, `true`, `2026-07-16`을 숫자·불리언·날짜로 추측하지 않아요. 자동 감지는 쉼표, 세미콜론, 탭 수를 비교하므로 자유 텍스트에 이런 문자가 많다면 구분자를 직접 골라 주세요. 한글만 있는 열 이름은 ASCII 키 정리 과정에서 `column_1` 같은 자리 이름으로 바뀔 수 있어요.

개인정보

붙여넣은 CSV와 선택한 파일은 이 페이지의 JavaScript가 브라우저 안에서만 읽어요. 이 도구는 파일이나 행 데이터를 업로드·저장하거나 서버로 보내지 않아요. 변환한 JSON을 다른 서비스에 복사할 때는 그 서비스의 데이터 처리 방침이 적용되므로 민감한 열이 없는지 먼저 확인해 주세요.

CSV 텍스트를 JSON으로 바꿉니다. 헤더 → 객체 배열 또는 2차원 배열 출력을 고를 수 있고, 구분자는 자동·,·;·탭입니다. 파서는 따옴표 상태, "" 이스케이프, CR/LF 정규화를 처리하며 모든 칸이 빈 행은 버립니다.

검증된 예

입력:

name,city
모듈,"서울, 강남"

헤더 사용 결과 키는 name, city이고 city 값은 서울, 강남입니다. 배열 모드에서는 [["name","city"],["모듈","서울, 강남"]] 형태가 됩니다.

한글 헤더만 있는 입력 이름,도시을 헤더 모드로 바꾸면 키가 column_1, column_2가 됩니다. 이는 ASCII 외 문자를 제거하는 정규화 때문이며, 버그가 아니라 현재 구현의 규칙입니다.

헤더 정규화 단계

  1. trim 후 소문자
  2. [a-z0-9]가 아닌 문자를 _로 치환
  3. 양끝 _ 제거
  4. 비면 column_N
  5. 중복 시 _2, _3 …

User Name → user_name, 이름 → column_1, email과 Email → 두 번째가 email_2가 될 수 있습니다.

구분자·오류

유럽 CSV(세미콜론)·TSV(탭)는 자동 감지되거나 직접 선택합니다. 닫히지 않은 따옴표가 있으면 변환을 멈추고 안내합니다. 열이 모자란 행은 빈 문자열로 채웁니다.

깨진 한글·BOM·앞자리 0 문제는 변환 전에 파일을 고쳐야 합니다. CSV 한글 인코딩 가이드와 JSON 포매터를 이어서 쓰면 검수 속도가 빨라집니다.

단계별 변환 실습

  1. 엑셀에서 UTF-8 CSV로보내기(가능하면 BOM 포함)를 선택합니다.
  2. 파일을 텍스트로 열어 헤더 한 줄과 데이터 두세 줄을 복사합니다.
  3. 이 도구에 붙여 넣고 구분자가 맞는지 확인합니다. 한 열로 뭉치면 세미콜론·탭을 시험합니다.
  4. 헤더 모드로 변환한 뒤 키 이름을 봅니다. 한글 헤더가 column_N이면 예상된 동작입니다.
  5. JSON을 JSON 포매터에 넣어 구조를 읽습니다.

전화번호 열에 큰따옴표가 없다면 엑셀이 이미 앞자리 0을 버렸을 수 있습니다. 그 경우 JSON으로 바꿔도 복구되지 않습니다. 원본 시트의 셀 형식을 텍스트로 바꾼 뒤 다시보내야 합니다.

배열 모드를 고르는 경우

  • 헤더가 없거나 1행부터 데이터인 파일
  • 한글·공백·기호가 섞인 헤더를 키로 유지해야 하는 경우
  • 열 개수가 행마다 들쭉날쭉해 객체로 묶으면 오히려 헷갈리는 경우

배열 모드 결과는 프로그램에서 rows[0]을 헤더로 쓰고 나머지는 값으로 매핑하기 좋습니다. 헤더 정규화 규칙을 우회하는 공식적인 방법입니다.

대용량·성능

수만 행을 붙여 넣으면 브라우저 탭이 느려질 수 있습니다. 샘플 100행으로 규칙을 검증한 뒤, 본 변환은 로컬 스크립트나 워크벤치 파이프라인으로 옮기는 편이 안전합니다. 이 도구의 강점은 업로드 없이 규칙과 따옴표를 눈으로 확인하는 데 있습니다.

헤더 모드 결과를 애플리케이션에 넘기기

객체 배열로 받은 뒤에는 키 이름이 코드의 필드와 같은지 확인합니다. user_name처럼 ASCII 헤더는 안정적이고, 한글 헤더는 column_1로 바뀌므로 매핑 테이블이 필요합니다. 매핑을 코드에 두기 싫다면 CSV 헤더를 영문으로 바꾼 뒤 변환하는 편이 단순합니다.

구분자가 쉼표인데 필드 안에 쉼표가 많다면 반드시 따옴표 규칙을 지킵니다. 규칙이 깨진 파일을 이 도구에 넣으면 열이 밀려 엉뚱한 JSON이 됩니다. 이상하면 배열 모드로 원본 격자를 보고 어느 행이 깨졌는지 찾으세요.

관련 가이드: CSV 한글 인코딩, JSON 문법.

작은 회귀 테스트처럼 쓰기

같은 CSV 샘플을 북마크해 두고, 구분자·따옴표 규칙을 바꿀 때마다 이 페이지에서 JSON 모양이 깨지지 않는지 확인하세요. 자동 감지에만 의존하지 말고, 알고 있는 파일 형식은 구분자를 고정합니다.

FAQ

한글 헤더가 column_1로 바뀌어요.

헤더 모드의 키는 ASCII 영문·숫자만 남깁니다. 한글만 있는 헤더는 column_N이 됩니다. 한글 키를 유지하려면 배열 모드로 변환하세요.

구분자를 자동으로 찾나요?

자동 모드에서는 쉼표·세미콜론·탭 중 앞쪽 비어 있지 않은 줄에서 가장 많이 나온 것을 고릅니다. 동점이면 쉼표가 우선입니다.

따옴표 안 쉼표는요?

따옴표로 감싼 필드의 쉼표는 값의 일부입니다. 값 안의 큰따옴표는 "" 두 번으로 적습니다.

업로드되나요?

아니요. 붙여 넣거나 이 브라우저에서 고른 파일만 로컬로 읽습니다.