JSON → CSV 변환기
JSON 객체 배열을 즉시 CSV로 변환. 중첩 객체 펼치기(점 경로), 사용자 정의 구분자, RFC 4180 이스케이프 지원. 브라우저에서 처리.
- 브라우저에서 처리
- 데이터가 브라우저 밖으로 나가지 않습니다
- 무료 · 회원가입 불필요
WeChat으로 스캔하여 공유
예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.
예제
기본 변환
입력 JSON:
[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]
출력 CSV:
id,name
1,Alice
2,Bob
중첩 객체 펼치기
입력 JSON:
[{"user":{"name":"Alice","age":30}}]
출력 CSV (펼치기 켬):
user.name,user.age
Alice,30
회원 명단: 0으로 시작하는 우편번호
회원 정보 JSON에서 우편번호는 보통 문자열로 들어 있고 주소는 중첩 객체입니다.
[{"이름":"김민수","우편번호":"06236","주소":{"시도":"서울","구":"강남구"}}]
출력 CSV:
이름,우편번호,주소.시도,주소.구
김민수,06236,서울,강남구
한글 키는 그대로 열 이름이 되고, 주소는 주소.시도, 주소.구 두 열로 펼쳐집니다. 우편번호 06236도 JSON 문자열 그대로 앞의 0이 남습니다. 문제는 Excel에서 열 때입니다. Microsoft 지원 페이지
앞에 오는 0과 더 큰 숫자를 유지에
따르면 Excel은 앞에 오는 0을 자동으로 제거하고 숫자는 15자리 정밀도까지만 유지합니다. 파일을 그대로 열면 이 열은 6236이 됩니다. 0을 남기려면 같은 페이지의 방법대로 [데이터] 탭에서 [텍스트/CSV에서]를 선택해 가져온 뒤, 쿼리 편집기에서 해당 열의 데이터 형식을 텍스트로 바꾸세요.
-로 시작하는 메모
상품 메모에 -50% 할인처럼 -로 시작하는 값이 있으면 수식 방지 대상입니다. 추가 CSV 옵션에서 수식 방지를 ”’ 붙이기”로 바꾸면:
[{"상품":"텀블러","메모":"-50% 할인"},{"상품":"머그컵","메모":"1+1 행사"}]
출력 CSV:
상품,메모
텀블러,"'-50% 할인"
머그컵,1+1 행사
상태 줄에는 2행 변환됨 · 1개 값에 수식 방지를 적용했습니다.가 표시됩니다. 검사하는 것은 값의 첫 글자뿐이라서, +가 중간에 있는 1+1 행사는 바뀌지 않습니다. 숫자 -5처럼 JSON에서 숫자인 값도 그대로입니다.
RFC 4180 준수
이 도구는 RFC 4180 CSV 표준을 따릅니다. 구분자, 큰따옴표, 줄바꿈을 포함한 필드는 큰따옴표로 감싸지며, 필드 내 큰따옴표는 ""로 이스케이프됩니다. 행 구분은 RFC 4180의 CR LF가 아니라 LF입니다(Excel, LibreOffice, pandas 모두 읽을 수 있음).
수식 방지
=, +, -, @, 탭, 줄바꿈으로 시작하는 셀은 스프레드시트에서 열 때 수식으로 실행될 수 있습니다(OWASP: CSV Injection). 도구는 이런 문자열 값을 세어 상태 줄에 표시합니다. 수식 방지를 켜면 OWASP 권장대로 앞에 문자를 붙이고 따옴표로 감쌉니다. ’ 붙이기는 ‘를, 탭 붙이기 (Excel)는 탭을 붙입니다(OWASP에 따르면 Excel에서 저장 후 다시 열어도 탭은 남습니다). 입력:
[{"name":"Ann","comment":"=HYPERLINK(\"http://example.com\",\"Click\")"}]
”’ 붙이기” 출력:
name,comment
Ann,"'=HYPERLINK(""http://example.com"",""Click"")"
JSON 문자열만 바꾸며, -5 같은 숫자, 불리언, JSON 텍스트로 쓰는 배열·객체는 그대로입니다. +82 2 1234 5678 같은 전화번호에도 접두 문자가 붙어 데이터가 바뀌므로 기본값은 꺼짐이고, 해당 값이 있으면 상태 줄에 알려 줍니다.
Excel과 BOM
다운로드한 파일은 기본적으로 UTF-8 BOM(바이트 EF BB BF)으로 시작합니다. Microsoft 지원 페이지 Opening CSV UTF-8 files correctly in Excel은 BOM과 함께 저장된 UTF-8 CSV는 그대로 열 수 있다고 설명합니다. BOM이 없으면 Windows용 Excel은 더블클릭으로 연 CSV를 시스템 코드 페이지(한국어 환경은 CP949)로 읽어 한글이 깨집니다. BOM을 예상하지 않는 프로그램은 BOM을 첫 열 이름의 일부로 읽을 수 있습니다(Python에서 encoding=“utf-8”이면 \ufeffid, “utf-8-sig”이면 제거됨). 이때는 “다운로드에 UTF-8 BOM 추가”를 끄세요. 복사한 내용에는 BOM이 붙지 않습니다.
제한 사항
- 입력은 JSON 배열이어야 합니다. 객체 하나만 붙여 넣으면 “입력은 객체의 JSON 배열이어야 합니다”가 표시되니
[ ]로 감싸세요.[1,“two”,null]처럼 객체가 아닌 요소는 하나의value열에 들어갑니다. - 빈 중첩 객체와 배열은 펼치지 않습니다.
"meta":{}는meta열이 되고 값은{}입니다.[“a”,“b”]같은 배열은 JSON 텍스트로 한 열에 들어갑니다. - 253을 넘는 정수는 JSON을 읽을 때 정밀도가 떨어집니다.
12345678901234567890은12345678901234567000으로 출력됩니다. 긴 ID는 JSON에서 문자열로 두세요. - 문자 인코딩은 바꾸지 않습니다. 출력은 UTF-8이며, CP949 CSV가 필요하면 내려받은 뒤 다른 도구로 변환하세요.
- 행 구분은 LF입니다. CR LF가 필요한 프로그램에서는 변환이 필요합니다.
- JSON에서 CSV로만 변환합니다. 반대 방향은 CSV → JSON 변환기를 쓰세요.
FAQ
어떤 JSON 형식을 지원하나요?
객체의 JSON 배열(예: [{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}])을 받습니다. 각 객체가 CSV의 한 행이 됩니다.
중첩 객체 펼치기는 어떻게 작동하나요?
「중첩 객체 펼치기」를 켜면 address.city와 같은 중첩 필드가 address.city라는 열 이름으로 독립적인 열이 됩니다. 끄면 중첩 객체 전체가 JSON 문자열로 하나의 열에 들어갑니다.
행마다 키가 다르면 어떻게 되나요?
모든 행의 키 합집합을 헤더로 사용합니다. 특정 행에 없는 필드는 빈 문자열로 출력됩니다.
특수 문자는 어떻게 처리되나요?
구분자, 큰따옴표, 줄바꿈이 포함된 필드는 RFC 4180에 따라 자동으로 큰따옴표로 감싸집니다. 필드 내 큰따옴표는 ""로 이스케이프됩니다.
Excel에서 열면 한글이 깨지는 이유는 무엇인가요?
Windows용 Excel은 더블클릭으로 연 CSV가 바이트 순서 표시(BOM)로 시작할 때만 UTF-8로 읽고, 그렇지 않으면 시스템 코드 페이지(한국어 환경은 CP949)로 읽어 한글이 깨집니다. 다운로드 파일에는 기본적으로 BOM이 붙습니다. 이 옵션을 껐다면 [데이터] 탭에서 [텍스트/CSV에서]를 선택해 가져올 때 인코딩을 UTF-8로 고르세요.
데이터가 서버로 전송되나요?
아니요. CSV는 브라우저 탭 안에서 만들어지며, 입력한 JSON을 서버로 보내거나 브라우저 저장소에 저장하지 않습니다. 입력란 편집을 마쳤을 때, 옵션을 바꾸거나 예시를 불러올 때 페이지의 방문 통계에 사용 이벤트(도구 이름과 convert라는 동작) 1건만 기록되며 JSON이나 CSV 내용은 포함되지 않습니다.