본문으로 건너뛰기
Case Converter Online
ko

CSV JSON 변환기

CSV를 붙여넣거나 .csv 파일을 열면 입력하는 즉시 JSON 배열이 만들어집니다. 구분자는 자동으로 감지하며, 반대로 JSON을 CSV로 바꿀 수도 있습니다.

CSV를 붙여넣거나 예시를 누르세요. 데이터는 브라우저 밖으로 나가지 않습니다.

이 변환기가 하는 일

CSV는 스프레드시트와 데이터베이스가 가장 흔히 내보내는 형식으로, 한 줄에 레코드 하나를 쓰고 값을 쉼표로 구분합니다. 반면 대부분의 API, 자바스크립트 코드, NoSQL 데이터베이스는 JSON을 기대합니다. 이 CSV JSON 변환 도구는 둘 사이를 오가며 바꿔 줍니다.

헤더 행이 있으면 CSV의 각 줄이 JSON 객체 하나가 되고, 열 이름이 키가 됩니다. 헤더 행이 없으면 각 줄이 값의 배열이 됩니다. 파싱은 검증된 CSV 라이브러리인 Papa Parse가 맡기 때문에 따옴표로 감싼 필드, 따옴표 안의 쉼표, 셀 안의 줄바꿈도 제대로 처리합니다.

사용 방법

  1. CSV → JSON을 고릅니다(반대 방향은 JSON → CSV).
  2. 데이터를 붙여넣거나, 파일 열기로 .csv 또는 .tsv 파일을 불러오거나, 예시를 누릅니다.
  3. 옵션을 정합니다. 옵션을 바꾸면 JSON이 바로 갱신됩니다.
    • 구분자: 자동 감지, 쉼표, 세미콜론, 탭, 파이프
    • 출력 형식: 공백 2칸, 공백 4칸, 압축
    • 첫 행을 헤더로: 켜면 키 이름이 있는 객체, 끄면 배열이 만들어집니다.
    • 숫자와 true/false 변환: 12를 숫자로, true를 불리언으로 바꿉니다. 끄면 모든 값이 문자열로 남습니다.
    • 빈 줄 건너뛰기: 스프레드시트가 끝에 자주 붙이는 빈 행을 무시합니다.
  4. 복사를 누르거나, 다운로드로 결과를 .json 파일로 저장합니다.

상태 표시줄에는 읽은 행과 열의 수, 그리고 감지된 구분자가 표시됩니다.

예시

이름 안에 쉼표가 있어 따옴표로 감싼 이 CSV는

id,name,email,city,signup_date,active,orders
1,Ada Lovelace,[email protected],London,2024-03-01,true,12
2,"Hopper, Grace",[email protected],New York,2024-04-17,false,3

다음과 같이 바뀝니다.

[
  {
    "id": 1,
    "name": "Ada Lovelace",
    "email": "[email protected]",
    "city": "London",
    "signup_date": "2024-03-01",
    "active": true,
    "orders": 12
  },
  {
    "id": 2,
    "name": "Hopper, Grace",
    "email": "[email protected]",
    "city": "New York",
    "signup_date": "2024-04-17",
    "active": false,
    "orders": 3
  }
]

“Hopper, Grace”를 감싼 따옴표 덕분에 이름 안의 쉼표가 그대로 유지됐습니다. id와 주문 수는 숫자가 되었고, true와 false는 불리언이 되었습니다. JSON에는 날짜 타입이 없으므로 날짜는 문자열로 남았습니다.

한글 열 이름과 값도 그대로 키와 값이 됩니다. 파일 맨 앞의 UTF-8 BOM은 변환 전에 제거되므로 첫 번째 키 앞에 보이지 않는 문자가 붙지 않습니다. 실제로 변환한 예시입니다.

이름,도시,우편번호,나이
김민준,서울,03187,34
이서연,"부산, 해운대구",48094,29

결과에서 서울 우편번호 "03187"은 문자열로, 부산 우편번호 48094는 숫자로, 나이는 숫자로 나옵니다. 같은 열에 문자열과 숫자가 섞이는 것이 싫다면 숫자와 true/false 변환을 끄세요.

텍스트로 남는 값

숫자처럼 보이는 값을 모두 숫자로 바꾸면 데이터가 손상될 수 있습니다. 이 변환기는 숫자로 바꾸면 값이 달라지는 경우 텍스트로 둡니다.

[
  {
    "name": "Ada",
    "zip": "02134",
    "phone": "0207 946 0000"
  }
]

우편번호의 앞자리 0이 유지됩니다. 0으로 시작하는 ID, 자바스크립트가 정확히 저장할 수 있는 범위보다 긴 정수에도 같은 규칙이 적용됩니다. 010으로 시작하는 국내 휴대폰 번호도 하이픈 유무와 상관없이 텍스트로 남습니다. 세미콜론 파일에서 2,50처럼 소수점을 쉼표로 쓴 가격도 올바른 JSON 숫자가 아니므로 문자열로 남습니다.

JSON을 CSV로

JSON → CSV를 누르고 객체 배열을 붙여넣습니다. 어느 객체에든 나온 키는 처음 나온 순서대로 모두 열이 됩니다. 중첩 객체 펼치기를 켜 두면 중첩 데이터의 열 이름이 점으로 이어집니다.

id,name,address.city,address.zip,tags
1,Ada,London,NW1,"[""admin"",""dev""]"
2,Grace,New York,,

Grace에게는 우편번호가 없어서 해당 셀이 비어 있습니다. tags 배열은 JSON 텍스트로 들어갔고, CSV 형식 규칙에 따라 안쪽 따옴표가 두 번씩 쓰였습니다. 배열의 배열은 헤더 없이 한 행씩 기록됩니다. 다운로드를 누르면 Excel, Numbers, Google 스프레드시트에서 열 수 있는 .csv 파일로 저장됩니다.

Excel과 한글 인코딩

이 도구는 파일을 UTF-8로 읽습니다. Excel에서 저장할 때 ‘CSV UTF-8(쉼표로 분리)’ 형식을 고르면 한글이 그대로 들어옵니다. 일반 ‘CSV(쉼표로 분리)’로 저장한 파일은 한국어 Windows에서 보통 CP949(EUC-KR 계열)로 저장되므로, 열었을 때 한글이 깨져 보일 수 있습니다. 이럴 때는 UTF-8 CSV로 다시 저장하거나, 셀을 복사해서 입력란에 바로 붙여넣으세요.

반대로 내려받은 CSV는 BOM 없는 UTF-8입니다. Excel에서 더블클릭으로 열면 한글이 깨져 보일 수 있으므로, Excel의 데이터 가져오기 기능에서 인코딩을 UTF-8로 지정해 여는 편이 안전합니다. Google 스프레드시트는 UTF-8 파일을 그대로 읽습니다.

행이 맞지 않을 때

어떤 행의 값 개수가 헤더보다 많거나 적어도 JSON은 만들어지며, 문제가 있는 곳은 스프레드시트 행 번호로 알려 줍니다. 예를 들어 “Row 3: Too many fields: expected 2 fields but parsed 3”처럼 표시되며, 1행은 헤더입니다. 열고 닫지 않은 따옴표도 같은 방식으로 알려 줍니다. 파일에서 해당 행을 고친 뒤 다시 붙여넣으세요.

팁

  • JSON은 JSON 포매터로 확인하세요. 키 정렬과 압축도 할 수 있습니다.
  • 설정 파일용 YAML이 필요하다면 여기서 JSON으로 바꾼 뒤 JSON YAML 변환기를 쓰세요.
  • README에 데이터를 표로 보여 주려면 마크다운 표 만들기에 같은 CSV나 스프레드시트 셀을 넣으면 됩니다.
  • 모든 값을 문자열로 유지해야 할 때, 예를 들어 자체적으로 타입을 정하는 시스템에 가져오기 전에는 숫자와 true/false 변환을 끄세요.

CSV를 JSON으로 바꾸는 다른 방법

  • Python: 내장 csv 모듈의 DictReader가 각 행을 딕셔너리로 읽고, json.dump로 내보내면 됩니다. 한글 파일이라면 open()에 encoding을 맞게 지정해야 합니다.
  • csvkit: 터미널에서 csvjson 명령으로 CSV 파일을 JSON으로 바꿉니다.
  • Excel과 Google 스프레드시트에는 JSON 내보내기 기능이 없습니다. 먼저 CSV로 저장한 뒤 여기서 변환하세요.
  • jq는 반대 방향, 즉 JSON에서 CSV로 바꿀 때 @csv 필터를 쓸 수 있습니다.

모든 처리는 브라우저 안에서 이루어집니다. 큰 파일은 조금 더 오래 걸릴 뿐, 업로드되는 것은 없습니다.

CSV JSON 변환 자주 묻는 질문

JSON에서 우편번호가 왜 따옴표로 감싸져 있나요?

의도된 동작입니다. 03187 같은 값을 숫자로 바꾸면 앞자리 0이 사라지므로, 0으로 시작하는 값은 텍스트로 남깁니다. 정확히 저장할 수 없을 만큼 큰 정수(긴 ID 등)도 마찬가지입니다. 12나 3.5 같은 일반 숫자는 JSON 숫자가 됩니다.

세미콜론으로 구분된 파일도 변환되나요?

네. 구분자를 자동 감지로 두면 쉼표, 세미콜론, 탭, 파이프 중 맞는 것을 찾아 씁니다. 유럽 여러 지역 설정의 스프레드시트는 CSV를 세미콜론으로 저장하는데, 어떤 구분자를 찾았는지는 상태 표시줄에 나옵니다.

JSON을 CSV로 바꿀 때 중첩 객체는 어떻게 되나요?

중첩 객체 펼치기를 켜 두면 중첩 객체가 address.city처럼 점으로 이어진 이름의 여러 열로 나뉩니다. 배열은 한 셀 안에 JSON 텍스트로 들어갑니다. 어느 객체에든 한 번이라도 나온 키는 모두 열이 됩니다.

데이터가 서버로 업로드되나요?

아니요. 파일은 브라우저 안에서 Papa Parse로 읽고 변환합니다. 서버로 아무것도 보내지 않으므로 고객 명단 같은 개인 데이터도 안심하고 다룰 수 있습니다.

코드와 데이터 도구 더 보기

전체 도구 보기