JSON → CSV 변환
JSON 배열을 엑셀에서 열 수 있는 CSV 표 형식으로 변환합니다.
📌 엑셀에서 한글이 깨진다면 "엑셀 호환 UTF-8 BOM"을 켜 두세요. 저장(다운로드)한 CSV 파일 앞에 BOM 표식이 붙어 엑셀이 UTF-8로 올바르게 읽습니다. 복사 붙여넣기에는 BOM이 적용되지 않으니, 엑셀로 옮길 때는 "저장" 버튼을 쓰는 편이 안전합니다.
미리보기
JSON → CSV 변환란?
API로 받은 JSON 데이터를 엑셀이나 구글 스프레드시트에서 바로 열고 싶으신가요? JSON 배열을 CSV 표 형식으로 변환해야 할 때, 설치나 회원가입 없이 웹 브라우저에서 즉시 해결할 수 있습니다. 이 도구는 객체 배열 형태의 JSON을 쉼표(,), 탭(TSV), 세미콜론(;) 등 원하는 구분자를 사용해 CSV로 변환합니다. 반대로 CSV를 JSON으로 바꾸는 양방향 변환도 가능합니다. 특히 { "user": { "name": "홍길동" } } 처럼 중첩된 JSON 객체를 'user.name' 형태의 열로 자동으로 펼쳐주는 '중첩 평탄화' 기능과, 엑셀에서 한글이 깨지는 문제를 해결하는 'UTF-8 BOM' 옵션을 제공합니다. 입력한 모든 데이터는 서버로 전송되지 않고 사용자의 컴퓨터 안에서만 처리되므로 민감한 정보도 안심하고 변환할 수 있습니다.
사용 방법
- 변환할 JSON 데이터를 왼쪽 입력창에 붙여넣거나, .json 또는 .csv 파일을 끌어다 놓습니다. 파일 확장자에 따라 변환 방향(JSON↔CSV)이 자동으로 설정됩니다.
- 필요에 따라 '중첩 평탄화'나 '엑셀 호환 UTF-8 BOM' 같은 변환 옵션을 선택합니다. 구분자도 쉼표, 탭(TSV), 세미콜론 등으로 바꿀 수 있습니다.
- 데이터를 입력하면 변환 결과가 오른쪽 창에 실시간으로 나타납니다. 하단에는 변환된 데이터의 행과 열 개수, 그리고 처음 20행까지의 미리보기 표가 표시됩니다.
- 오른쪽 상단의 '복사' 버튼을 눌러 결과를 클립보드에 복사하거나, '저장' 버튼을 눌러 .csv 또는 .json 파일로 다운로드합니다.
- 결과를 다시 입력값으로 사용하고 싶다면 '결과를 입력으로' 버튼을, 처음부터 다시 시작하려면 '지우기' 버튼을 사용하세요.
JSON → CSV 변환 사용 가이드
실제 작업에서 이 도구를 어떻게 쓰는지, 무엇을 조심해야 하는지 정리했습니다.
엑셀에서 한글이 깨지는 이유와 BOM
이 도구를 쓰는 사람이 가장 많이 겪는 문제입니다. 변환은 잘 됐는데 엑셀로 열면 물음표나 "占쏙옙" 같은 글자가 나옵니다.
원인은 엑셀에 있습니다. 윈도우 한국어판 엑셀은 CSV 파일을 열 때 UTF-8이라고 가정하지 않고 시스템 기본 인코딩(CP949)으로 읽습니다. UTF-8로 저장된 한글 3바이트를 CP949 표로 읽으니 깨지는 것입니다.
해결책이 BOM입니다. 파일 맨 앞에 EF BB BF(U+FEFF) 세 바이트를 붙여 두면 엑셀이 UTF-8이라고 알아봅니다. "엑셀 호환 UTF-8 BOM" 옵션이 이 일을 합니다.
휴대폰번호 앞 0이 사라지는 문제
01012345678이 엑셀에서 1012345678이 되고, 카드번호 16자리가 1.2346E+15로 바뀌는 그 문제입니다. CSV는 값의 타입 정보가 없는 순수 텍스트라, 엑셀이 열면서 "숫자처럼 생겼으니 숫자"라고 제멋대로 판단하기 때문입니다.
이 도구의 CSV → JSON 방향은 이 함정을 피하도록 만들어져 있습니다.
- 0으로 시작하는 값(01012345678, 04524 같은 우편번호)은 숫자로 바꾸지 않고 문자열로 둡니다.
- 16자리 이상 숫자(카드번호·일부 계좌번호)도 문자열로 둡니다. 자바스크립트 숫자로 담으면 정밀도를 잃기 때문입니다.
- true/false/null 은 각각 불리언·null로 변환합니다. "숫자·불리언 자동 인식"을 끄면 모든 값이 문자열로 남습니다.
중첩 JSON 평탄화 — 점 표기의 규칙
API 응답은 대개 중첩돼 있는데 CSV는 평평한 표라, 중첩을 어떻게든 펼쳐야 합니다. "중첩 평탄화"를 켜면 경로를 점으로 이어 열 이름을 만듭니다.
- 배열은 인덱스가 키가 됩니다. 태그.0, 태그.1 처럼 됩니다. 항목 수가 행마다 다르면 열이 그만큼 늘어납니다.
- 평탄화를 끄면 중첩 객체는 JSON 문자열 그대로 한 셀에 들어갑니다. 원본 구조를 보존해야 할 때 쓰세요.
- CSV → JSON 방향에서 평탄화를 켜면 반대로 점이 있는 열 이름을 다시 중첩 객체로 복원합니다. 왕복이 됩니다.
- 행마다 키가 다르면 모든 행의 키를 모아 열을 만들고, 없는 값은 빈 칸으로 둡니다.
{ "주문번호": "A-0042",
"고객": { "이름": "홍길동", "연락처": "010-1234-5678" },
"태그": ["신규", "VIP"] }
→ 열: 주문번호 | 고객.이름 | 고객.연락처 | 태그.0 | 태그.1
따옴표·쉼표·줄바꿈이 든 값
CSV에서 값 안에 구분자가 들어가면 표가 어긋납니다. 그래서 RFC 4180 규칙에 따라 큰따옴표로 감싸고, 값 안의 큰따옴표는 두 번 반복해 표시합니다. 이 도구는 자동으로 처리합니다.
- 구분자를 세미콜론(;)으로 바꾸면 유럽 지역 설정의 엑셀에서 바로 열립니다. 한국어 윈도우는 쉼표가 기본입니다.
- 탭(TSV)을 고르면 저장 시 확장자도 .tsv 가 됩니다. 값에 쉼표가 많은 데이터(주소·상품명)는 TSV가 덜 지저분합니다.
- 줄 끝은 CRLF로 씁니다. 엑셀·윈도우 호환을 위한 CSV 표준입니다.
| 원래 값 | CSV 출력 | 이유 |
|---|---|---|
| 무선 드릴, 20V | "무선 드릴, 20V" | 쉼표가 들어 있음 |
| 드릴 세트 "프로" | "드릴 세트 ""프로""" | 따옴표는 두 번으로 |
| 첫 줄과 둘째 줄 (줄바꿈 포함) | 따옴표로 감쌈 | 줄바꿈이 들어 있음 |
| 여백 | " 여백 " | 엑셀이 앞뒤 공백을 잘라내는 것 방지 |
입력 형태와 한계
표로 만들려면 "객체들의 배열"이어야 열 이름이 나옵니다. 다만 실제 API 응답이 그렇게 깔끔한 경우가 드물어서, 몇 가지는 알아서 맞춰 줍니다.
- { "data": [ … ] } 처럼 배열을 감싼 형태 — 배열인 키가 정확히 하나면 그 배열을 자동으로 꺼내 씁니다. 배열 키가 둘 이상이면 어느 쪽인지 알 수 없어 객체 하나짜리 표가 됩니다.
- 객체 하나만 있는 JSON — 1행짜리 표로 만듭니다.
- .json / .csv / .tsv 파일을 드래그해 놓으면 확장자를 보고 변환 방향과 구분자를 자동으로 맞춥니다. 최대 8MB이고, 브라우저 안에서만 읽으므로 업로드되지 않습니다.
자주 묻는 질문
어떤 JSON 형태가 되나요?
기본적으로 [{ "이름": "홍길동" }, { "이름": "김철수" }] 와 같이 객체들이 배열로 묶인 형태를 지원합니다. 만약 { "results": [...] } 처럼 데이터가 다른 키 안에 배열로 포함된 경우, 자동으로 배열을 찾아 변환합니다. 단일 객체 { "이름": "홍길동" } 를 넣으면 1행짜리 표로 만들어줍니다.
엑셀에서 열었더니 한글이 깨져요.
엑셀에서 한글 CSV를 열 때 깨지는 현상을 막으려면, '엑셀 호환 UTF-8 BOM' 옵션을 켠 상태로 '저장' 버튼을 눌러 파일을 다운로드하세요. 이 옵션은 파일 맨 앞에 특수한 인식표(BOM)를 추가하여 엑셀이 UTF-8 인코딩으로 파일을 읽게 만듭니다. 복사/붙여넣기 시에는 BOM이 포함되지 않으므로, 한글이 있다면 파일로 저장해 여는 것이 가장 확실합니다.
'중첩 평탄화'는 무엇인가요?
JSON 안에 객체가 또 들어있는 중첩 구조를 표로 보기 좋게 펼쳐주는 기능입니다. 예를 들어 { "고객": { "이름": "홍길동" } } 이라는 데이터가 있을 때, 이 옵션을 켜면 '고객.이름'이라는 새로운 열이 만들어지고 그 값으로 '홍길동'이 채워집니다. 옵션을 끄면 '고객' 열에 JSON 문자열 `{"이름":"홍길동"}`이 통째로 들어갑니다.
입력한 데이터를 서버에 저장하나요?
아니요, 저장하지 않습니다. 툴즈25시의 모든 도구는 사용자의 웹 브라우저 안에서만 동작합니다. JSON-CSV 변환 역시 서버로 어떠한 데이터도 전송하지 않으므로, 개인정보나 민감한 사내 데이터를 외부 유출 걱정 없이 안심하고 사용하셔도 됩니다.