JSON을 CSV로 변환하는 방법
- JSON을 붙여 넣습니다. 객체 배열, 객체 하나,
{"data": [ … ]}처럼 배열이 든 API 응답, 한 줄에 객체 하나씩인 JSON Lines 모두 됩니다. 붙여 넣는 즉시 변환됩니다. - 구분자를 고릅니다. 한국어 Windows의 Excel은 쉼표를 쓰므로 기본값 그대로 두면 됩니다.
- 배열을 쓰는 방식을 고릅니다. 한 칸에 JSON 텍스트로, 쉼표로 잇기로, 또는 항목마다 열로 나누기입니다.
- 미리 보기를 확인한 뒤 내려받기로 .csv 파일을 받거나, 복사해서 다른 곳에 붙여 넣으세요.
변환은 이렇게 이루어집니다
CSV는 평평한 표이고 JSON은 나무 구조라서, 변환기는 레코드마다 구조를 펼칩니다.
- 행 찾기: 맨 바깥이 배열이면 항목 하나가 한 행입니다. 맨 바깥이 객체면 그 안에서 객체 배열을 한 단계씩 찾아 첫 번째 것을 쓰고, 행을 가져온 위치에
$.data.items처럼 경로를 보여 줍니다. 그런 배열이 없으면 객체 하나가 한 행이 됩니다. - 중첩 객체는 점으로 이은 이름의 열이 됩니다.
{"customer": {"city": "서울"}}은customer.city열이 되며, 깊이에 상관없습니다. - 열은 모든 레코드의 키를 처음 나온 순서대로 모은 것입니다. 어떤 레코드에 키가 없으면 그 칸은 비어 있으므로, 필드가 서로 다른 레코드도 열이 어긋나지 않습니다.
- 값: 글자는 그대로, 숫자는 JSON에 쓰인 그대로,
true와false는 단어로,null은 빈 칸으로 씁니다. - 따옴표: RFC 4180에 따라 구분자, 큰따옴표, 줄바꿈이 든 칸은 큰따옴표로 감싸고 안의 따옴표는 두 번 씁니다. 줄 끝은 표준과 Excel이 기대하는 CRLF입니다.
| 배열 옵션 | {"tags": ["빨강", "파랑"]}의 결과 |
|---|---|
| JSON 텍스트 | tags ⏎ "[""빨강"",""파랑""]" |
| 쉼표로 잇기 | tags ⏎ "빨강, 파랑" |
| 열로 나누기 | tags.0,tags.1 ⏎ 빨강,파랑 |
JSON 텍스트는 정보를 모두 남겨 나중에 다시 JSON으로 되돌릴 수 있고, 쉼표로 잇기는 스프레드시트에서 가장 읽기 좋으며, 열로 나누기는 길이가 같은 짧은 목록에 알맞습니다.
예시로 보기
입력란의 예시는 orders 아래에 주문 2건이 든 API 응답입니다. 변환기는 $.orders에서 행을 찾아 열 7개를 만듭니다.
id,customer.name,customer.city,total,paid,items,note 9007199254740993,김민준,서울,45000,true,"[""책"",""머그컵""]", 9007199254740994,이서연,부산,12900,false,"[""펜""]","부재 시 문 앞에 놓아 주세요, 감사합니다"
고객 객체는 customer.name와 customer.city 두 열이 되었습니다. 첫 주문에는 note가 없어 마지막 칸이 비어 있고, 두 번째 주문의 메모에는 쉼표가 있어 따옴표로 감쌌습니다. 주문 ID 9007199254740993과 9007199254740994도 정확합니다. 둘 다 JavaScript의 JSON.parse가 숫자를 반올림하기 시작하는 253보다 커서, 많은 변환기가 첫 번째를 …992로 바꿔 버립니다. 파일 크기는 BOM 3바이트를 포함해 247바이트입니다. UTF-8에서 한글은 한 글자에 3바이트입니다.
Excel에서 CSV 한글이 깨지는 이유
- 한글 깨짐: 한국어 Windows의 Excel은 CSV를 더블클릭해 열면 표시가 없는 한 UTF-8이 아니라 예전 코드 페이지(CP949, EUC-KR)로 읽습니다. 그래서 BOM 없는 UTF-8 CSV의 ‘김민준’이 ‘源�誘쇱��’처럼 엉뚱한 한자와 기호로 깨집니다. 파일 맨 앞의 보이지 않는 세 바이트(EF BB BF), 곧 UTF-8 BOM이 Excel에 UTF-8이라고 알려 주므로 Excel용이라면 켜 두세요. 이 BOM을 첫 열 이름의 일부로 읽어 버리는 프로그램에 넣을 때만 끄면 됩니다. 구글 스프레드시트와 Numbers는 둘 다 문제없이 읽습니다.
- 이미 BOM 없이 받은 파일: Excel의 데이터 › 텍스트/CSV에서로 가져오면서 파일 원본을 ‘65001: 유니코드(UTF-8)’로 고르면 깨지지 않습니다. Excel에서 다시 저장할 때는 형식을 ‘CSV UTF-8(쉼표로 분리)’로 고르세요.
- 구분자: 한국은 소수점에 점을 쓰므로 Excel의 목록 구분자도 쉼표입니다. 독일이나 프랑스처럼 소수점에 쉼표를 쓰는 지역의 Excel은 세미콜론을 기대하므로, 그런 곳에 보낼 파일만 세미콜론으로 바꾸세요.
- 긴 숫자와 앞자리 0: CSV에는 모든 자리가 남지만 Excel은 유효 숫자 15자리까지만 저장합니다. 9007199254740993은 9.0072E+15로 표시되고 9007199254740990으로 저장됩니다. 주문번호, 송장 번호, 사업자등록번호처럼 긴 코드나 우편번호 06236 같은 앞자리 0은 가져오기에서 그 열을 텍스트로 지정하세요.
- 수식: =, +, -, @로 시작하는 칸은 스프레드시트에서 수식으로 실행될 수 있습니다. 모르는 사람이 만든 JSON이라면 Excel로 열기 전에 그런 칸을 확인하세요.
한계와 팁
- 수 MB짜리 파일은 1초 안팎이면 변환됩니다. 결과가 200,000자를 넘으면 화면 표시와 복사가 느려지므로 내려받기로만 제공합니다.
- 잘못된 JSON은 줄과 열로 위치를 알려 줍니다. 오류 종류와 고치는 법은 JSON 정렬이 더 자세히 설명합니다.
- 응답에 레코드 배열이 여러 개라면 원하는 배열만 붙여 넣거나 맨 위로 옮기세요. JWT 페이로드를 표로 보고 싶다면 먼저 JWT 디코딩으로 JSON을 꺼내면 됩니다.
- 모든 처리는 브라우저 안에서 이루어집니다. JSON과 CSV는 기기 밖으로 나가지 않고 저장되지도 않으며, 페이지를 새로 고치면 입력란이 비워집니다.
자주 묻는 질문
데이터가 업로드되나요?
아니요. 변환은 브라우저의 JavaScript가 하고 내려받는 파일도 기기에서 만들어집니다. 고객 목록이나 사내 API 응답처럼 민감한 데이터에도 쓸 수 있고, 페이지를 연 뒤에는 오프라인에서도 동작합니다.
CSV를 Excel로 열면 한글이 깨져요.
Excel이 파일을 UTF-8이 아닌 CP949로 읽었기 때문입니다. UTF-8 BOM 붙이기를 켠 채로 다시 내려받아 새 파일을 여세요. BOM이 Excel에 UTF-8 파일임을 알려 줍니다.
Excel에서 모든 값이 한 열에 들어가요.
파일의 구분자와 Excel이 기대하는 구분자가 다른 경우입니다. 한국어 Excel은 쉼표를 쓰므로 구분자를 쉼표로 두세요. 그래도 안 되면 데이터 › 텍스트/CSV에서로 열고 구분 기호를 직접 고르세요.
중첩된 JSON은 어떻게 변환되나요?
점으로 이은 이름의 열로 펼칩니다. {"user": {"address": {"city": "부산"}}}은 user.address.city 열이 됩니다. 배열은 고른 옵션에 따라 한 칸의 JSON 텍스트, 쉼표로 이은 값, 항목마다 한 열이 됩니다.
JSON Lines(NDJSON)도 변환되나요?
네. 로그 파일이나 데이터 내보내기에서 흔한, 한 줄에 JSON 값 하나씩인 형식을 붙여 넣으면 줄마다 한 행이 되고 열은 모든 줄을 합쳐 만듭니다.
최종 수정일: 2026년 10월 16일