📊 JSON ↔ CSV 변환기
JSON 배열을 엑셀에서 열 수 있는 CSV로, CSV를 JSON으로 바꿔요. 쉼표·따옴표·줄바꿈이 섞인 값도 규칙대로 처리하고, 결과를 표로 미리 보여줘요.
사용법
- 위쪽에서 JSON → CSV 또는 CSV → JSON을 고르고 입력란에 붙여넣으세요. 파일 열기를 누르거나 파일을 입력란에 끌어다 놓아도 돼요. 입력하는 즉시 결과와 표 미리보기가 바뀌어요.
- JSON → CSV에서는 구분자(쉼표·세미콜론·탭·파이프)와 중첩 객체를
address.city처럼 펼칠지 고르세요. 결과를 엑셀에서 열 거라면 ⬇ .csv로 내려받으세요. BOM 옵션이 켜져 있으면 한글이 깨지지 않아요. - CSV → JSON에서는 첫 줄이 머리글인지, 숫자·true/false를 진짜 타입으로 바꿀지 고르세요. 구분자는 "자동"이면 쉼표·탭·세미콜론·파이프 중에서 알아서 찾아요.
- ↑ 결과를 입력으로를 누르면 방향이 뒤집혀서, JSON → CSV → JSON 왕복이 제대로 되는지 바로 확인할 수 있어요.
JSON을 CSV로 바꾸는 규칙
CSV는 2차원 표라서, 객체 배열([{…}, {…}])의 객체 하나가 한 행, 키 하나가 한 열이 돼요. 객체마다 키가 달라도 괜찮아요. 모든 객체의 키를 처음 나온 순서대로 모은 합집합을 머리글로 쓰고, 없는 칸은 비워 둬요.
| JSON 값 | CSV 칸 | 설명 |
|---|---|---|
{"address": {"city": "서울"}} | address.city 열에 서울 | 중첩 객체 펼치기 (점 표기) |
{"tags": ["a", "b"]} | ["a","b"] | 배열 → JSON 문자열 (옵션) |
{"tags": ["a", "b"]} | tags.0=a, tags.1=b | 배열 옵션을 끄면 번호로 펼침 |
null · 키 없음 | (빈 칸) | CSV에는 null이 따로 없어요 |
true · 3.14 | true · 3.14 | 글자 그대로 |
{"data": [ … ]} | data 배열을 표로 | 객체 배열을 감싼 응답은 자동으로 안쪽 배열 사용 |
API 응답처럼 {"data": [...]}로 감싼 JSON도 안쪽 객체 배열을 찾아서 바꿔 줘요. 한 줄에 객체 하나씩 쓴 JSON Lines(NDJSON)도 읽어요.
CSV 따옴표 규칙 (RFC 4180)
CSV에는 공식 표준이 사실상 하나(RFC 4180)뿐이고 규칙도 단순해요. 이 도구는 이 규칙대로 쓰고 읽어요.
- 칸 안에 구분자(쉼표)·큰따옴표·줄바꿈이 있으면 칸 전체를
"…"로 감싸요.대전, 유성구→"대전, 유성구" - 감싼 칸 안의 큰따옴표는 두 번 써요.
"인용"→"""인용""" - 따옴표로 감싼 칸 안에서는 줄바꿈도 그대로 들어갈 수 있어요. 그래서 CSV는 "한 줄 = 한 행"이 아니고, 줄 단위로
split('\n')하면 깨져요. - 줄바꿈은 CRLF(
\r\n)가 표준이에요. 리눅스 도구에 넣을 거라면 CRLF 옵션을 끄고 LF로 써도 돼요.
엑셀에서 CSV 한글이 깨질 때
엑셀(특히 Windows)은 CSV 파일 맨 앞에 BOM(EF BB BF, 이 파일이 UTF-8이라는 표시)이 없으면 한국어 Windows 기본 인코딩(CP949)으로 읽어서 한글이 깨져요. "다운로드 파일에 BOM 붙이기"를 켜 두면 이 문제가 사라져요. 반대로 엑셀에서 "CSV(쉼표로 분리)"로 저장한 파일은 CP949인 경우가 많은데, 이 도구에서 파일 열기로 열면 UTF-8로 안 읽힐 때 EUC-KR(CP949)로 다시 읽어요.
유럽식 엑셀처럼 소수점에 쉼표를 쓰는 환경에서는 구분자로 세미콜론을 써야 열이 제대로 나뉘어요. 탭 구분(TSV)은 복사해서 구글 시트·엑셀 셀에 바로 붙여넣을 때 편해요.
CSV → JSON 타입 추론
CSV의 모든 칸은 원래 글자예요. "숫자·true/false·null 자동 변환"을 켜면 31 → 숫자 31, true → 불리언, 빈 칸 → null로 바꿔요. 단, 0으로 시작하는 값(전화번호 01012345678, 우편번호 04524)과 2⁵³을 넘는 큰 정수는 정보가 사라지지 않도록 글자로 둬요. "점 키를 중첩 객체로"를 켜면 address.city 같은 열이 {"address": {"city": …}}로 되돌아가요.
모든 변환은 브라우저 안에서만 이뤄지고 파일과 입력값은 서버로 전송되지 않아요. 엑셀에서 =·+·-·@로 시작하는 칸은 수식으로 실행될 수 있으니(CSV 인젝션), 남이 만든 데이터를 엑셀로 열 때는 주의하세요.