GroundHaus

CSV ↔ JSON 변환기

CSV를 객체 배열 JSON으로, 또는 JSON 배열을 CSV로 서로 변환합니다.

도구·설명 업데이트

기본값은 모든 값을 문자열로 보존합니다. 숫자 자동 변환을 켜도 앞자리 0과 긴 식별자는 유지합니다.

사용법 · 예제 · 제한 사항

이게 뭔가요?

CSV → JSON은 첫 줄을 헤더(키 이름)로 읽어 각 행을 객체로 만든 배열을 출력합니다. JSON → CSV는 객체 배열을 헤더가 있는 CSV로 바꿉니다. 따옴표·구분자·개행이 들어간 셀은 RFC 4180 규칙(큰따옴표로 감싸고, 안의 큰따옴표는 두 번 적기)으로 읽고 씁니다. 구분자는 쉼표·탭·세미콜론 중에서 고를 수 있고, 결과는 복사 버튼으로 가져갑니다. 파일로 내려받는 기능은 없습니다.

CSV → JSON 예제

아래 CSV를 입력 칸에 붙여넣으세요. 두 번째 행의 주소에는 쉼표가, 세 번째 행의 주소에는 줄바꿈이 들어 있고, 둘 다 큰따옴표로 감싸져 있습니다.

이름,나이,주소,우편번호
홍길동,30,"서울시 중구, 세종대로 110",04524
김영희,27,"부산시 해운대구
우동 1234",48094

기본 설정(숫자 자동 변환 끔)의 결과입니다. 모든 값이 문자열입니다.

[
  {
    "이름": "홍길동",
    "나이": "30",
    "주소": "서울시 중구, 세종대로 110",
    "우편번호": "04524"
  },
  {
    "이름": "김영희",
    "나이": "27",
    "주소": "부산시 해운대구\n우동 1234",
    "우편번호": "48094"
  }
]

쉼표가 든 주소는 한 칸으로 올바르게 묶였고 줄바꿈은 \n으로 들어갔습니다. 우편번호 04524도 앞자리 0이 살아 있습니다. 나이를 숫자로 받고 싶을 때만 숫자 자동 변환을 켜세요. 그러면 "나이": 30이 되고, 04524는 앞자리 0 때문에 문자열로 남으며 그 사실을 경고로 알려줍니다.

숫자 자동 변환의 규칙

옵션을 켰을 때 -12.5처럼 부호·정수·소수점만으로 이뤄진 값이 숫자가 됩니다. 단, 아래 경우는 숫자 모양이어도 문자열로 보존하고 경고를 띄웁니다.

입력 셀 옵션 끔 옵션 켬 비고
30 "30" 30 정수
-3.14 "-3.14" -3.14 음수·소수
007 "007" "007" + 경고 앞자리 0 보존
04524 "04524" "04524" + 경고 앞자리 0 보존
0 "0" 0 0 하나는 앞자리 0이 아님
0.5 "0.5" 0.5 소수는 앞자리 0으로 보지 않음
42 " 42 " " 42 " + 경고 앞뒤 공백 보존
1,250,000 "1,250,000" "1,250,000" 쉼표가 있으면 문자열 (쉼표 구분자면 따옴표로 감싸야 한 셀)
1e5 "1e5" "1e5" 지수 표기는 변환 안 함
+5 "+5" "+5" 플러스 기호는 변환 안 함
true "true" "true" 불리언 변환 없음
2026-10-05 "2026-10-05" "2026-10-05" 날짜는 문자열
12345678901234567890 "12345678901234567890" "12345678901234567890" + 경고 2^53 − 1 초과, 정밀도 손실 방지

주문번호·카드번호처럼 자릿수가 긴 식별자는 옵션을 켜도 안전하게 문자열로 남습니다. 경고는 문자열로 보존한 값의 개수를 알려줍니다. 변환 결과는 그대로 사용할 수 있습니다.

변환을 멈추는 CSV 오류

아래 경우에는 오류가 있는 행 또는 열을 안내하고 결과를 비웁니다. 해당 위치를 고치면 다시 변환됩니다.

상황 동작
헤더 이름이 중복 (id,name,id) 오류. 같은 키에 뒤 열 값이 덮어쓰이는 일을 막습니다
헤더가 빈 칸 (id,,name) 오류. ""라는 키가 생기지 않습니다
행의 칸이 헤더보다 적음 오류. 그 행 번호가 표시됩니다
행의 칸이 헤더보다 많음 오류. 넘치는 값을 버리지 않습니다
여는 따옴표만 있고 닫는 따옴표 없음 오류. 그 뒤 전체가 한 셀로 흡수되지 않습니다

아래는 정상 처리되는 경우입니다.

상황 동작
줄 끝 \r\n(윈도우) 한 번의 줄바꿈으로 읽음. 따옴표 안의 줄바꿈은 보존
마지막 행 끝의 줄바꿈 하나 빈 행을 추가하지 않음
따옴표 안의 "" 큰따옴표 한 글자로 읽음
따옴표 안의 구분자·줄바꿈 셀 값의 일부로 읽음
탭·세미콜론 구분자 구분자 옵션을 바꾸면 쉼표와 같은 규칙으로 처리

빈 줄은 빈 셀 하나인 행으로 읽습니다. 열이 여러 개인 표에서는 열 수 불일치 오류가 나므로 불필요한 빈 줄을 지우세요.

JSON → CSV 예제

[
  { "id": 1, "name": "홍길동", "tags": ["a", "b"], "memo": null },
  { "id": 2, "name": "김영희", "email": "kim@example.com", "active": true }
]

쉼표 구분자 결과입니다.

id,name,tags,memo,email,active
1,홍길동,"[""a"",""b""]",,,
2,김영희,,,kim@example.com,true

오류와 제한

JSON → CSV는 객체 배열만 받습니다. 그 외 모양은 오류로 멈춥니다.

입력 결과
{ "a": 1 } (객체 하나) 오류. [ { "a": 1 } ]로 감싸세요
[1, 2, 3] (객체가 아닌 요소) 오류. 모든 요소를 객체로 바꿔야 합니다
[ {"a": 1}, [2, 3] ] (배열이 섞임) 오류. 배열 요소도 객체가 아닙니다
[] (빈 배열) 빈 결과
문법이 틀린 JSON 오류. 위치를 찾으려면 JSON Formatter에 먼저 넣어 보세요

JSON 숫자는 입력 단계에서 이미 바뀔 수 있습니다

JSON → CSV는 입력을 브라우저의 JSON.parse로 읽습니다. 그래서 JSON 본문에 따옴표 없이 적힌 숫자가 9007199254740991(2^53 − 1)보다 크면, 변환기가 손대기 전에 파싱 단계에서 끝자리가 바뀝니다.

입력 JSON CSV 결과 이유
[{"id": 12345678901234567890}] 12345678901234567000 숫자로 적혀 있어 파싱 때 정밀도 손실
[{"id": "12345678901234567890"}] 12345678901234567890 문자열로 적혀 있어 그대로 보존

CSV → JSON의 긴 숫자 보존 규칙은 CSV 셀을 읽을 때 적용되는 것이라, JSON 쪽 입력에는 미치지 않습니다. 긴 ID를 다루는 API 응답을 CSV로 바꿀 때는 원본 JSON에서 그 값이 문자열인지 먼저 확인하세요. 숫자로 되어 있다면 이 도구뿐 아니라 자바스크립트로 JSON을 읽는 모든 곳에서 같은 일이 일어납니다.

엑셀과 주고받는 가장 쉬운 방법

  1. 엑셀·구글 시트에서 범위를 복사하면 탭 구분 텍스트가 클립보드에 들어갑니다.
  2. CSV 구분자를 탭으로 바꾸고 붙여넣으면 CSV → JSON이 그대로 됩니다. 쉼표가 든 주소도 따옴표 처리 없이 안전합니다.
  3. 반대로 JSON → CSV 결과도 구분자를 탭으로 두고 복사하면 시트의 셀에 바로 붙여넣을 수 있습니다.

결과를 메모장 등에 붙여넣어 .csv로 저장해 엑셀로 열어야 한다면, 텍스트가 UTF-8이라는 점을 기억하세요. 한국어 윈도우 엑셀은 .csv를 더블클릭하면 다른 코드페이지로 읽어 한글이 깨질 수 있습니다. 데이터 → 텍스트/CSV 가져오기에서 파일 원본을 65001: 유니코드(UTF-8)로 지정하면 정상적으로 열립니다. 유럽권 엑셀처럼 소수점이 쉼표인 환경에서는 CSV 구분자가 세미콜론이므로 옵션에서 ;를 고르세요.

한계

제작·관리 GroundHaus · 오류 제보 · 데이터 처리 안내

자주 묻는 질문

우편번호 04524가 그대로 "04524"로 나오는데 숫자로 바꿀 수 없나요?

기본값은 모든 값을 문자열로 두는 것이라 그대로 나오는 게 정상입니다. 숫자 자동 변환을 켜도 앞자리가 0인 값은 자릿수가 의미 있는 식별자로 보고 문자열로 보존하며, 경고로 알려줍니다. 정말 숫자가 필요하면 원본에서 앞자리 0을 뺀 뒤 변환하세요.

엑셀에서 복사한 데이터를 바로 넣을 수 있나요?

네. 엑셀·구글 시트에서 셀을 복사하면 탭으로 구분된 텍스트가 되므로, CSV 구분자를 "탭"으로 바꾸고 붙여넣으면 됩니다. 반대로 JSON → CSV 결과도 구분자를 탭으로 두고 복사하면 시트에 붙여넣을 때 열이 그대로 나뉩니다.

변환이 행·열 위치가 적힌 오류로 멈춥니다.

그 위치의 CSV가 규칙에 어긋난다는 뜻입니다. 헤더 이름이 비었거나 중복됐을 때, 어떤 행의 칸 수가 헤더와 다를 때, 따옴표가 열리고 닫히지 않았을 때 변환을 멈춥니다. 데이터를 조용히 버리거나 덮어쓰는 대신 멈추는 것이라, 표시된 행·열을 고친 뒤 다시 붙여넣으세요.

변환한 CSV를 엑셀에서 열면 한글이 깨집니다.

결과는 복사용 UTF-8 텍스트라서, 메모장 등에 .csv로 저장해 한국어 윈도우 엑셀에서 더블클릭하면 다른 인코딩으로 읽혀 깨질 수 있습니다. 엑셀의 데이터 → 텍스트/CSV 가져오기에서 파일 원본을 UTF-8로 지정하거나, 구분자를 탭으로 두고 결과를 시트에 직접 붙여넣으면 깨지지 않습니다.