CSV JSON 변환기 (표 데이터 변환)

CSV와 JSON을 서로 변환하고 구분자·따옴표·줄바꿈이 섞인 데이터를 안전하게 처리합니다.

변환할 내용을 붙여 넣어 주세요.

사용 방법

  1. 변환 방향을 고르고 왼쪽 칸에 CSV나 JSON을 붙여 넣으면 바로 변환됩니다. 버튼을 누를 필요가 없습니다.
  2. 구분자는 첫 줄을 보고 자동으로 고르며, 쉼표·탭·세미콜론·파이프 중에서 직접 지정할 수도 있습니다. 엑셀에서 표를 복사해 붙여 넣으면 칸이 탭으로 구분되므로 탭을 고르거나 자동 감지에 맡기면 됩니다.
  3. 첫 줄이 열 이름이면 결과는 객체 배열이 되고, 끄면 배열의 배열이 됩니다.
  4. 결과는 복사하거나 파일로 저장할 수 있습니다. CSV로 저장할 때는 줄바꿈 종류와 BOM을 고를 수 있습니다.

따옴표 규칙 (RFC 4180)

CSV에서 어려운 부분은 값 안에 구분자나 줄바꿈이 들어 있는 경우입니다. 표준은 그런 값을 큰따옴표로 감싸고, 값 안의 큰따옴표는 두 번 겹쳐 쓰도록 정합니다. 그래서a,"b,c",d는 네 칸이 아니라 세 칸이고, 따옴표 안의 줄바꿈은 줄을 나누지 않습니다. 줄 단위로 자르거나 쉼표로 나누는 방식(split)으로는 이 규칙을 지킬 수 없어 이 도구는 글자 하나씩 읽는 파서를 직접 씁니다. 아래 표는 이 페이지를 만들 때 실제 파서가 내놓은 결과입니다.

입력 한 줄나뉜 칸칸 수
a,b,c["a","b","c"]3
a,"b,c",d["a","b,c","d"]3
"그는 ""안녕"" 했다"["그는 \"안녕\" 했다"]1
a,"b c",d["a","b\nc","d"]3
"1,000",2["1,000","2"]2
a,,b["a","","b"]3

줄바꿈은 CRLF·LF·CR 세 가지를 모두 받아들이고, 값 안의 줄바꿈은 LF 하나로 통일합니다. 맨 앞에 BOM이 있으면 제거하고, 파일 끝의 빈 줄과 중간의 빈 줄은 건너뜁니다. 다만 따옴표로 감싼 빈 값("")만 있는 줄은 사람이 일부러 넣은 값이므로 남겨 둡니다.

엑셀에서 한글이 깨지는 이유와 BOM

엑셀은 CSV 파일을 열 때 인코딩을 스스로 판단합니다. UTF-8로 저장한 한글 파일인데 아무 표시가 없으면 윈도우 기본 인코딩으로 읽어 버려 글자가 깨집니다. 이를 막는 관행이 파일 맨 앞에 UTF-8 BOM(U+FEFF, 바이트로는 EF BB BF)을 붙이는 것입니다. BOM이 있으면 엑셀이 UTF-8임을 알아보고 한글을 그대로 엽니다. 그래서 이 도구는 CSV로 저장할 때 BOM을 붙일지 고를 수 있게 했습니다. 엑셀에서 열 파일이라면 켜 두고, 다른 프로그램에서 읽을 파일이라면 끄는 편이 안전합니다. BOM을 지우지 않는 프로그램이 첫 열 이름을 이름 대신 BOM+이름으로 읽어 열을 찾지 못하는 일이 있기 때문입니다. 반대로 CSV를 읽을 때는 맨 앞의 BOM을 항상 제거하고 알려 줍니다.

값 종류 변환

CSV에는 값의 종류가 없어 모든 칸이 글자입니다. 숫자 변환을 켜면 숫자·true·false·null을 JSON 값으로 바꾸지만, 다시 글자로 썼을 때 원문과 똑같아지는 값만 바꿉니다. 사번 007이나 전화번호처럼 앞의 0이나 기호가 중요한 값이 조용히 망가지는 것을 막기 위한 규칙입니다. 빈 칸은null이 아니라 빈 문자열로 둡니다.

CSV 칸변환 켜기변환 끄기
11"1"
-42-42"-42"
3.143.14"3.14"
truetrue"true"
falsefalse"false"
nullnull"null"
(빈 칸)""""
007"007""007"
1e3"1e3""1e3"
9007199254740993"9007199254740993""9007199254740993"
010-1234-5678"010-1234-5678""010-1234-5678"
TRUE"TRUE""TRUE"

변환 예시

CSV 입력JSON 결과
이름,부서,메모
홍길동,영업1팀,"서울, 강남구
2층 근무"
김영희,개발팀,"별명은 ""영희 대리"""
[
  {
    "이름": "홍길동",
    "부서": "영업1팀",
    "메모": "서울, 강남구\n2층 근무"
  },
  {
    "이름": "김영희",
    "부서": "개발팀",
    "메모": "별명은 \"영희 대리\""
  }
]

반대 방향에서는 객체마다 키가 달라도 모든 키를 모아 열을 만들고, 그 객체에 없는 키는 빈 칸으로 둡니다. 아래 예시에서 첫 객체에는 부서가 없고 둘째 객체에는 사번이 없지만 열은 이름, 사번, 부서 세 개가 됩니다.

JSON 입력CSV 결과
[
  { "이름": "홍길동", "사번": "007" },
  { "이름": "김영희", "부서": "개발팀" }
]
이름,사번,부서
홍길동,007,
김영희,,개발팀

알아 둘 점

붙여 넣은 데이터는 서버로 전송되지 않습니다. 모든 변환은 브라우저 안에서만 일어나고, 파일로 저장하기도 브라우저가 직접 만든 파일을 내려받는 방식입니다. 오류 메시지에는 몇 번째 줄 몇 번째 칸이 잘못됐는지만 담고 입력한 값은 담지 않습니다.

자주 묻는 질문

엑셀에서 CSV를 열면 한글이 왜 깨지나요?

엑셀은 CSV를 열 때 파일이 UTF-8인지 알려 주는 표시가 없으면 윈도우 기본 인코딩(CP949)으로 읽습니다. UTF-8로 저장한 한글이 CP949로 읽히면 글자가 깨집니다. 파일 맨 앞에 UTF-8 BOM(U+FEFF) 세 바이트를 붙이면 엑셀이 UTF-8로 알아보고 한글을 그대로 엽니다. 이 도구의 저장 설정에서 BOM 붙이기를 켜면 됩니다. 반대로 개발용 API나 데이터베이스로 넣을 파일은 BOM이 값에 섞여 문제를 일으킬 수 있으니 끄는 편이 안전합니다.

값 안에 쉼표나 줄바꿈이 있으면 CSV로 어떻게 저장하나요?

CSV 표준(RFC 4180)은 값에 구분자·줄바꿈·따옴표가 들어 있으면 값 전체를 큰따옴표로 감싸고, 값 안의 큰따옴표는 두 개로 겹쳐 쓰라고 정합니다. 예를 들어 서울, 강남구라는 한 값은 "서울, 강남구"로 저장하고, 그는 "안녕" 했다는 "그는 ""안녕"" 했다"로 저장합니다. 이 도구는 내보낼 때 이 규칙을 자동으로 적용하고, 읽을 때도 감싼 따옴표 안의 구분자와 줄바꿈을 값의 일부로 다룹니다.

줄마다 칸 수가 다른 CSV는 어떻게 처리되나요?

조용히 버리거나 잘라내지 않습니다. 첫 줄(열 이름 줄)보다 칸이 적은 줄은 모자란 칸을 빈 값으로 채우고, 칸이 더 많은 줄은 열2·열5처럼 이름을 새로 지어 값을 담습니다. 그리고 몇 번째 줄이 몇 칸이었는지 결과 아래에 모두 알려 줍니다. 줄 번호는 따옴표 안의 줄바꿈을 계산한 원본 파일의 줄 번호라서, 그 줄을 편집기에서 바로 찾아갈 수 있습니다.

사번 007이나 전화번호의 0이 사라지지 않나요?

사라지지 않습니다. 숫자 변환을 켜도 다시 글자로 썼을 때 원문과 똑같아지는 값만 숫자로 바꿉니다. 007은 숫자로 바꾸면 7이 되어 원문과 달라지므로 문자열 "007"로 남고, 010-1234-5678, 1.50, 1e3, 9007199254740993처럼 모양이 바뀔 수 있는 값도 모두 문자열로 남습니다. 열 전체를 문자열로 두고 싶다면 숫자·true/false/null 변환을 끄면 됩니다.

여기에 붙여 넣은 표 데이터는 어디로 전송되나요?

어디로도 전송되지 않습니다. 변환은 모두 사용자의 브라우저 안에서 일어나고 서버로 올라가는 내용은 없습니다. 파일로 저장하기도 브라우저가 만든 데이터를 바로 내려받는 방식입니다. 고객 명단이나 매출 표처럼 밖으로 내보내면 안 되는 자료도 그대로 붙여 넣어 변환할 수 있습니다. 한 번에 다룰 수 있는 크기는 5MB, 10만 줄까지입니다.

이 도구가 도움이 되었다면 공유해 주세요

계산 근거

이 계산기가 쓰는 세율·요율·기준의 출처입니다. 숫자가 맞는지 직접 확인해 보세요.

계산 결과가 이상한가요? 알려 주세요.

계산 결과는 참고용이며 법적 효력이 없습니다.

다른 도구