- 변환 방향을 "CSV → JSON" 또는 "JSON → CSV" 중에서 선택합니다.
- 데이터의 구분자(쉼표·탭·세미콜론)를 맞추고, 첫 줄이 필드명이면 "헤더 행" 옵션을 켭니다.
- 입력창에 CSV 또는 JSON을 붙여넣고 "변환" 버튼을 누릅니다.
- 결과를 "결과 복사"로 클립보드에 담거나, "다운로드"로 .json·.csv 파일로 저장합니다.
CSV와 JSON은 같은 표 데이터를 다르게 적은 형식입니다. 쓰는 곳이 달라 서로 변환할 일이 잦습니다.
- CSV: 쉼표로 칸을 나눈 표. 엑셀·구글 시트에서 바로 열려 사람이 보기 좋습니다.
- JSON: 키-값 구조. API·프로그램이 데이터를 주고받기 좋습니다.
- 헤더 행: CSV 첫 줄이 필드명이면, JSON으로 바꿀 때 그 이름이 각 객체의 키가 됩니다.
엑셀 데이터를 API에 넣거나, API 응답을 시트에서 분석할 때 이 변환이 유용합니다. 한글 깨짐 등 주의점은 CSV 한글 깨짐 가이드를 참고하세요.
아래 CSV를 "CSV → JSON"(쉼표 구분, 헤더 사용)으로 변환한 결과를 칸별로 정리했습니다.
name,age,zip,memo
홍길동,30,01234,"서울, 강남"
김영희,25,48058,"그는 ""안녕""이라 했다"
이철수,,06236,
| CSV의 칸 | JSON 값 | 눈여겨볼 점 |
|---|---|---|
30 | "30" | 숫자도 문자열로 들어옴 |
01234 | "01234" | 앞자리 0이 그대로 유지됨 |
"서울, 강남" | "서울, 강남" | 따옴표 안의 쉼표는 칸을 나누지 않음 |
"그는 ""안녕""이라 했다" | "그는 \"안녕\"이라 했다" | 따옴표 두 개는 따옴표 한 개로 풀림 |
| (빈 칸) | "" | null이 아니라 빈 문자열 |
모든 값이 문자열로 나오므로 나이처럼 계산에 쓸 값은 받는 쪽에서 숫자로 바꿔야 합니다. 대신 우편번호·전화번호의 앞자리 0은 지워지지 않습니다. 크기는 81자였던 CSV가 보기 좋게 정렬한 JSON으로 260자, 공백을 뺀 JSON으로 169자가 됩니다. 행마다 키 이름이 반복되기 때문에 2~3배로 커지는 것입니다.
구분자와 칸 수가 맞지 않으면
| 입력 | 구분자 설정 | 결과 |
|---|---|---|
a;b ↵ 1;2 | 쉼표 | [{"a;b":"1;2"}] — 한 칸으로 읽힘 |
a;b ↵ 1;2 | 세미콜론 | [{"a":"1","b":"2"}] |
a,b ↵ 1,2,3 | 쉼표 | 변환 실패: Too many fields: expected 2 fields but parsed 3 |
a,b ↵ 1 | 쉼표 | 변환 실패: Too few fields: expected 2 fields but parsed 1 |
결과의 키가 "a;b"처럼 구분 기호를 품고 있다면 구분자 설정이 데이터와 다른 것입니다.
JSON → CSV: 키가 서로 다르거나 값이 중첩돼 있으면
[{"name":"홍길동","age":30,"memo":"서울, 강남","tags":["a","b"],"addr":{"city":"서울"}},
{"name":"김영희","age":25,"extra":true}]
name,age,memo,tags,addr,extra
홍길동,30,"서울, 강남","[""a"",""b""]","{""city"":""서울""}",
김영희,25,,,,true
열은 모든 객체의 키를 합쳐 만들기 때문에 둘째 객체에만 있는 extra도 열로 나옵니다. 해당 키가 없는 칸은 비워 두고, 배열이나 객체처럼 중첩된 값은 JSON 문자열 그대로 한 칸에 담습니다. 쉼표가 든 값에는 따옴표가 자동으로 붙습니다.
- 엑셀·스프레드시트 데이터를 API용으로: 엑셀에서 범위를 복사하면 탭으로 구분된 표가 됩니다. 구분자를 "탭"으로 두고 CSV → JSON으로 변환하면, 시트 데이터를 그대로 REST API 요청 본문이나 목업 데이터로 활용할 수 있습니다.
- API 응답을 표로 정리: 서버에서 받은 JSON 배열을 JSON → CSV로 바꾸면 엑셀·구글 시트에서 바로 열어 필터·정렬·집계를 할 수 있습니다. 객체 배열의 키가 자동으로 CSV 헤더가 됩니다.
- 세미콜론 구분 CSV 대응: 유럽권 엑셀이나 일부 시스템은 쉼표 대신 세미콜론을 구분자로 씁니다. 구분자를 "세미콜론"으로 선택하면 깨지지 않고 정확히 파싱됩니다.
네. 큰따옴표로 감싼 필드 안의 쉼표·줄바꿈·따옴표를 표준 CSV 규칙(RFC 4180)에 맞게 처리합니다. JSON으로 변환할 때 따옴표가 풀리고, CSV로 만들 때 필요한 값은 자동으로 따옴표 처리됩니다.
헤더 옵션을 끄면 CSV의 각 줄이 값들의 배열로 변환되어, JSON은 객체가 아닌 배열의 배열 형태가 됩니다. 반대로 JSON → CSV에서는 배열의 배열을 그대로 행으로 출력합니다.
변환은 기기 성능 안에서 동작합니다. 수천 행 정도는 즉시 처리되지만 수십만 행처럼 매우 큰 데이터는 시간이 걸리거나 브라우저가 느려질 수 있으니, 필요하면 나눠서 변환하세요.
엑셀이 CSV를 시스템 기본 인코딩으로 열기 때문입니다. 다운로드한 파일에 UTF-8 BOM이 포함되면 대부분 해결되며, 그래도 깨지면 엑셀의 '데이터 → 텍스트/CSV 가져오기'에서 인코딩을 UTF-8로 지정해 여세요.
CSV는 평평한 표라서 깊게 중첩된 JSON은 그대로 담기 어렵습니다. 한 단계 객체 배열은 키가 열이 되어 잘 변환되지만, 값 안에 또 객체·배열이 있으면 문자열로 합쳐지거나 일부만 표현될 수 있습니다. 표 형태(객체 배열)의 데이터에 가장 적합합니다.