JSON → CSV 변환기

JSON 객체 배열을 즉시 CSV로 변환. 중첩 객체 펼치기(점 경로), 사용자 정의 구분자, RFC 4180 이스케이프 지원. 브라우저에서 처리.

  • 브라우저에서 처리
  • 데이터가 브라우저 밖으로 나가지 않습니다
  • 무료 · 회원가입 불필요
구분자 쉼표, 세미콜론 또는 탭으로 열을 구분합니다. 선택한 구분자, 따옴표, 줄바꿈이 있는 필드는 자동으로 따옴표로 감쌉니다.
추가 CSV 옵션
중첩 객체 펼치기 켜면 비어 있지 않은 중첩 객체를 점 경로 열로 펼칩니다. 끄면 JSON 텍스트로 유지합니다. 배열과 빈 객체는 한 열에 유지합니다.
헤더 포함 모든 행의 키 합집합을 첫 헤더 행으로 넣습니다. 없는 값은 빈 필드가 됩니다.
수식 방지 끄면 위험한 문자열을 변경하지 않습니다. 따옴표 또는 탭 접두사는 해당 문자열과 헤더를 보호한 뒤 CSV 필드를 따옴표로 감쌉니다. 숫자는 바꾸지 않습니다.
다운로드에 UTF-8 BOM 추가 (Excel) Excel용 다운로드 파일에 UTF-8 BOM을 추가합니다. 표시하거나 복사한 CSV에는 이 BOM을 추가하지 않습니다.
입력을 중첩 주소가 있는 사용자 두 건으로 바꾸고 현재 옵션으로 즉시 변환합니다.
JSON, CSV와 상태를 지우고 다섯 옵션은 유지합니다. 도구 안의 Ctrl/⌘+L도 결과를 지웁니다.
JSON 배열을 입력하세요. 입력을 멈춘 뒤 300밀리초 후 변환하고 옵션 변경은 즉시 반영합니다. 잘못된 JSON은 출력을 지웁니다.
CSV 출력
현재 UTF-8 BOM 설정으로 CSV 전체를 export.csv에 저장합니다. 출력이 비어 있으면 다운로드하지 않습니다.
표시된 CSV 전체를 복사하며 BOM은 추가하지 않습니다. 출력이 비어 있으면 복사하지 않습니다.

JSON 배열을 입력하거나 예시를 불러와 CSV를 생성하세요.

예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.

예제

기본 변환

입력 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 내용은 포함되지 않습니다.