CSV를 JSON 객체 배열로 변환하기

  1. CSV → JSON을 선택하고 쉼표·세미콜론·탭 중 실제 구분자를 고릅니다.
  2. 첫 행에 열 이름이 있는 데이터를 붙여 넣거나 UTF-8 파일을 불러옵니다.
  3. 변환하기를 누르고 결과의 키와 값을 확인합니다.
  4. JSON을 복사하거나 파일로 다운로드합니다.

첫 행의 열 이름은 비어 있거나 중복될 수 없습니다. 모든 행의 열 개수는 첫 행과 같아야 합니다. 이 도구는 숫자·날짜·불리언을 자동 추정하지 않고 CSV 값을 문자열로 유지합니다. 앞뒤 공백도 값의 일부입니다.

id,name
001,Alice
002,Bob

첫 데이터 행의 결과는 다음과 같습니다.

{"id":"001","name":"Alice"}

빈 셀은 빈 문자열이 됩니다. 001 같은 코드를 숫자로 바꾸면 앞의 0이 사라지므로 식별자는 문자열로 유지하는 편이 적합합니다. JSON 파일 안에서 문자열인 값도 다른 프로그램이 다시 변환할 수 있으므로 최종 처리 규칙을 확인하세요.

쉼표·큰따옴표·셀 안의 줄바꿈 처리

CSV에서는 값 자체에 쉼표나 줄바꿈이 있으면 큰따옴표로 감싸고, 값 안의 큰따옴표는 두 번 적는 방식이 널리 쓰입니다. 예를 들어 아래 데이터는 두 열이며 name 값은 Alice, Kim입니다.

id,name
001,"Alice, Kim"

"He said ""Hello"""는 He said "Hello"라는 한 셀을 나타냅니다. 따옴표 안의 줄바꿈은 같은 셀에 남고, 따옴표 밖의 줄바꿈은 다음 행으로 처리됩니다. 그래서 줄 단위로 먼저 자르고 쉼표로 나누는 단순한 방식으로는 이런 데이터를 정확히 읽기 어렵습니다.

이 도구는 CRLF·LF·CR 행 구분을 읽고 마지막 행 끝의 줄바꿈 한 번은 추가 빈 행으로 만들지 않습니다. 중간의 빈 줄은 레코드로 처리하므로 열 개수가 다르면 오류가 납니다. 닫는 따옴표 뒤의 공백 등 엄격한 입력 규칙에 맞지 않는 문자는 거부합니다. TSV와 세미콜론 구분도 같은 따옴표 규칙을 적용하는 이 도구의 지원 방식이며 모든 프로그램의 TSV 방언과 동일하다는 뜻은 아닙니다.

참고: RFC 4180의 CSV 형식 설명. 이 문서는 일반적으로 사용되는 CSV 관행을 정리한 Informational 문서입니다.

JSON을 CSV로 저장할 때 열과 빈 값은 어떻게 되나요?

입력은 객체로 구성된 배열이어야 합니다. 예를 들어 [{"id":"001","active":true},{"id":"002","note":"memo"}]처럼 입력합니다. 모든 객체의 키를 모아 열을 만들며, JavaScript에서 키를 열거하는 순서에 따라 처음 만난 키 순서를 사용합니다. 정수 모양의 키는 일반 문자열 키와 순서가 다르게 열거될 수 있습니다.

없는 키와 null은 모두 빈 셀로 출력합니다. 빈 문자열도 빈 셀로 표현되므로 CSV만으로 이 셋을 구별해 복원할 수 없습니다. 불리언은 true·false 텍스트로, 숫자는 숫자의 문자열 표현으로 내보냅니다. CSV를 다시 JSON으로 변환하면 모든 값이 문자열이므로 원래 자료형을 자동 복구하지 않습니다.

중첩 객체와 배열은 거부합니다. 주소 객체를 address.city 같은 열로 펼치는 규칙은 데이터에 따라 달라 자동으로 정하지 않습니다. JSON은 JavaScript 숫자로 읽기 때문에 큰 숫자나 소수의 정밀도가 바뀔 수 있습니다. 안전한 정수 범위를 벗어난 정수 값은 거부하며, 긴 주문 번호 같은 식별자는 처음부터 큰따옴표로 감싼 문자열로 전달하세요. JSON의 중복 키는 파서에서 마지막 값이 남을 수 있으므로 원본을 보관하세요.

엑셀 한글·UTF-8 BOM과 수식 해석 옵션

파일 입력은 UTF-8만 지원합니다. CP949·EUC-KR 등 다른 인코딩 파일은 먼저 UTF-8로 준비하세요. CSV 다운로드의 BOM 옵션은 파일 앞에 UTF-8 표시 바이트를 추가합니다. 프로그램에 따라 문자 인코딩 판별에 도움이 될 수 있지만 모든 가져오기 설정을 해결하지는 않습니다. 결과 화면과 복사에는 BOM을 넣지 않으며 JSON 다운로드에도 넣지 않습니다.

CSV는 셀의 자료형, 색상, 글꼴이나 여러 시트를 보존하는 XLSX 파일이 아닙니다. 스프레드시트에서 열면 001이 숫자 1로 바뀌거나 날짜처럼 해석될 수 있습니다. 식별자 열은 프로그램의 가져오기 화면에서 텍스트로 지정하고 실제 결과를 확인하세요.

기본으로 켜진 작은따옴표 옵션은 수식처럼 시작하는 문자열과 열 이름 앞에 작은따옴표를 붙입니다. 등호·더하기·빼기·골뱅이 등으로 시작하는 문자열의 수식 해석 위험을 줄이기 위한 처리이며 실제 데이터를 바꿉니다. 숫자형 음수는 문자열과 다르게 처리합니다. 모든 스프레드시트와 재저장 과정의 안전을 보장하지 않으므로 출처가 불분명한 데이터는 가져오기 설정과 내용을 함께 확인하세요. 원문 그대로 내보내야 한다면 옵션의 영향을 이해한 뒤 해제하세요.

보안 참고: OWASP CSV Injection.

용량 제한과 오류가 날 때 확인할 순서

입력은 UTF-8 기준 2MiB, 데이터는 10,000행·100열, 출력은 8MiB 이하입니다. JSON은 각 행에 키 이름을 반복하므로 CSV보다 커질 수 있습니다. 출력 제한에 걸리면 입력을 나누세요. 데이터는 현재 브라우저에서 처리하고 새로고침하면 입력과 결과가 사라집니다.

열 개수 오류는 구분자가 맞는지, 쉼표가 든 값이 따옴표로 감싸졌는지, 빈 줄이 끼어 있는지부터 확인하세요. JSON 구문 오류는 JSON 정리 도구에서 확인할 수 있습니다. 변환에 성공했다는 것은 API의 필수 필드나 업무 규칙까지 검증했다는 뜻은 아닙니다. 원본을 별도로 보관하고 행 수·열 수·대표 값으로 결과를 검토하세요.

자주 묻는 질문

CSV의 숫자를 JSON 숫자로 자동 변환하나요?

아니요. 모든 셀을 문자열로 유지합니다. 001 같은 식별자나 긴 숫자 문자열이 임의로 바뀌는 것을 피하기 위한 방식입니다.

엑셀 XLSX 파일도 업로드할 수 있나요?

지원하지 않습니다. 스프레드시트에서 필요한 시트를 UTF-8 CSV로 내보낸 뒤 사용하세요.

CSV와 JSON을 왕복하면 완전히 같은 데이터인가요?

항상 그렇지는 않습니다. null·없는 키·빈 문자열의 구분과 JSON 자료형은 CSV 왕복만으로 복원되지 않습니다. 작은따옴표 옵션을 켜면 해당 문자열도 변경됩니다.