JSON ⇄ CSV 변환
객체 배열 JSON을 CSV로, CSV를 JSON으로 변환합니다. 구분 문자, 제목 행, Excel용 BOM 포함 저장을 지원합니다.
=, +, -, @, 탭, CR로 시작하는 셀 앞에 ' 를 붙입니다. 값이 바뀌므로 데이터 연동용 CSV에서는 꺼 두세요(-5 같은 숫자는 그대로입니다).
끄면 모든 값이 문자열입니다. 켜도 007처럼 앞자리가 0인 값, 아주 큰 정수, 1.50·1e3처럼 표기가 바뀌는 숫자는 문자열로 남습니다.
Excel에서 열 때 글자가 깨지면 켜 주세요. 복사한 내용에는 BOM이 붙지 않습니다.
사용 방법
- 변환 방향(JSON → CSV 또는 CSV → JSON)을 고릅니다.
- 데이터를 붙여 넣고 구분 문자와 제목 행 여부를 고릅니다.
- 필요하면 옵션(수식 무효화, 숫자 변환)을 고르고 "변환하기"를 누릅니다.
- 결과를 "복사"하거나 "다운로드"로 저장합니다. Excel에서 CSV를 열 때는 "BOM 포함 UTF-8로 저장"을 켜 주세요.
주의 사항
- 입력은 5MB까지이며 UTF-8만 지원합니다.
- JSON → CSV의 입력은 객체 배열입니다. 객체가 하나뿐이면 한 행으로 처리합니다. 그 밖의 형태(배열의 배열, 문자열 등)는 오류로 표시됩니다.
- 중첩된 객체·배열은 펼치지 않고 JSON 문자열 그대로 한 셀에 넣습니다.
- JSON의 null은 빈 셀, true/false는 문자 true/false, 숫자는 적힌 그대로(1.0은 1.0) 출력합니다. 따라서 JSON → CSV → JSON으로 왕복해도 형식(숫자·참거짓·null)은 원래대로 돌아오지 않습니다.
- CSV → JSON에서 제목 행과 열 개수가 다른 행은 부족한 값을 빈 문자열로 채우고, 초과한 값은 column3 같은 키로 남깁니다(건수를 표시합니다). 비어 있는 제목은 columnN, 중복된 제목은 name_2처럼 바꿉니다.
- 완전히 빈 줄은 건너뜁니다. 입력란에 붙여 넣은 줄바꿈은 브라우저 사양상 큰따옴표 안을 포함해 LF가 됩니다.
계산·변환 방식
CSV는 RFC 4180을 따릅니다. 구분 문자, 큰따옴표, 줄바꿈(CR·LF)이 든 값은 큰따옴표로 감싸고, 값 안의 큰따옴표는 두 번 겹쳐 씁니다. 출력 줄바꿈은 CRLF입니다.
제목 행은 모든 객체의 키를 처음 나온 순서대로 나열합니다. 한 객체에 같은 키가 중복되면 마지막 값을 사용합니다.
CSV → JSON은 기본적으로 모든 값을 문자열로 둡니다. 우편번호, 전화번호, 앞자리가 0인 ID, 큰 숫자를 잃지 않기 위해서입니다. "숫자·true/false·null 변환"을 켜면 true, false, null과, 다시 써도 같은 문자가 되는 십진수(안전한 정수 범위 안)만 변환합니다.
"스프레드시트용으로 수식 무효화"를 켜면 =, +, -, @, 탭, CR로 시작하는 셀 앞에 ' 를 붙여 스프레드시트에서 수식으로 실행되지 않게 합니다(CSV 인젝션 대책). 값 자체가 바뀌므로 기본값은 꺼짐입니다. -5나 +81처럼 숫자만 있는 셀은 바꾸지 않습니다.
자주 묻는 질문
Excel에서 CSV를 열면 글자가 깨집니다.
"BOM 포함 UTF-8로 저장(Excel용)"을 켜고 다시 다운로드해 주세요. Excel은 BOM이 없는 UTF-8 CSV를 제대로 인식하지 못할 때가 있습니다.
0으로 시작하는 번호가 사라지지 않나요?
CSV → JSON에서는 값을 문자열로 두므로 007은 007 그대로입니다. Excel에서 0이 사라진다면 Excel의 가져오기 기능에서 해당 열을 텍스트로 지정해 주세요.
중첩된 JSON을 여러 열로 펼칠 수 있나요?
펼치지 않습니다. 중첩된 부분은 JSON 문자열로 한 셀에 들어갑니다. 열 이름을 정하는 표준 방법이 없고 원래대로 되돌리기도 어렵기 때문입니다.
데이터가 서버로 전송되나요?
아니요. 변환은 모두 브라우저 안에서 이루어지며 입력 내용을 저장하거나 전송하지 않습니다.
관련 사용 가이드
- JSON 오류 위치 찾기와 수정, 정렬하는 방법파서가 읽지 못하는 대표적인 JSON 실수(따옴표·쉼표·주석·True/False)를 찾고 고치는 방법과 정렬·압축·트리 보기 사용법을 설명합니다.
관련 도구
최종 업데이트: