§

CSV로 변환하려는 JSON 배열을 붙여넣으세요.

구분자
헤더 열
첫 행을 헤더로
중첩 객체
타입 추론
§

Output

csv

국내 데이터 업무에서 JSON을 CSV로 변환하는 작업은 매일 일어납니다. API가 JSON 배열을 반환하면 재무, 운영, 또는 프로덕트 팀이 점심 전까지 Excel이나 Google Sheets에서 열어야 합니다. 공공데이터포털 data.go.kr에서 내려받는 행정안전부·국토부 데이터셋과 KOSIS(한국통계정보서비스)에서 일괄 다운로드되는 인구·경제 통계는 대부분 CSV로 배포되며, BigQuery·Snowflake로 적재하기 전 단계에서 JSON으로 변환됩니다. 한국은행 경제통계시스템 ECOS의 시계열 데이터, 국세청 NTS의 사업자등록정보 CSV, 금융감독원 DART의 공시 데이터도 같은 흐름을 거칩니다. KISA의 PIPA 가이드라인을 따르는 핀테크·헬스케어 현장에서는 외부 SaaS 변환기에 민감 데이터를 붙여 넣을 수 없으므로, 이 도구처럼 브라우저 안에서 완결되는 변환이 표준 운영 절차에 부합합니다.

JSON → CSV 변환이란 무엇인가요?

JSON(JavaScript Object Notation, RFC 8259)은 구조화된 데이터를 위한 트리 형태의 텍스트 형식이고, CSV(Comma-Separated Values, RFC 4180)는 납작한 표 형식의 텍스트 형식입니다. JSON을 CSV로 변환하면 그 트리가 행과 열로 펼쳐져, API 응답으로 시작된 데이터셋을 한 줄도 다시 입력하지 않고 스프레드시트에서 열 수 있게 됩니다.

JSON → CSV 변환은 어떻게 작동하나요?

모든 변환은 브라우저에서 로컬로 실행됩니다. 큰 흐름은 다음과 같습니다:

  1. JSON.parse가 입력을 검증하고 최상위 레코드 배열임을 확인합니다. 괄호, 쉼표, 인용된 키 이름이 맞지 않으면 명확한 오류가 발생합니다.
  2. 라이터가 레코드에서 헤더 열을 도출합니다 — 모든 키의 합집합이거나 첫 레코드의 키만 사용하거나, 토글로 결정됩니다.
  3. 중첩 객체는 점 표기 키(user.id, user.city)로 평탄화되거나 단일 JSON 셀로 직렬화됩니다. 객체 안의 배열은 두 모드 모두에서 JSON 문자열화됩니다.
  4. 각 셀은 RFC 4180에 따라 이스케이프됩니다: 구분자, 큰따옴표, 또는 줄바꿈을 포함한 값은 인용 부호로 감싸지고 내부 인용 부호는 겹쳐집니다. 행은 \r\n 줄바꿈으로 연결됩니다.
  5. CSV는 읽기 전용 출력 상자에 나타나며, 다운로드 링크는 MIME 타입 text/csv;charset=utf-8Blob으로 생성되어 한 번의 클릭으로 파일을 저장할 수 있습니다.

이 도구로 JSON을 CSV로 변환해야 하는 이유는?

  • 프라이버시: 모든 파싱, 평탄화, 쓰기 과정이 브라우저에서 일어납니다. 데이터는 절대 서버에 도달하지 않습니다.
  • 정확성: 라이터는 RFC 4180을 따릅니다. Bob, Jr. 같은 값은 "Bob, Jr."로 출력되어 — 두 열이 아닌 하나의 인용 셀 — 변환 후에도 내부 줄바꿈이나 인용 부호가 보존됩니다.
  • 스프레드시트 준비 완료: 출력은 키에서 이미 도출된 헤더 열과 함께 Excel이나 Google Sheets에 바로 붙여넣을 수 있어, 데이터를 사용하기 전 수작업 정리가 필요 없습니다.
  • 유연성: 중첩 객체를 점 표기 키로 평탄화하거나 단일 셀로 직렬화할 수 있고, 쉼표가 아닌 CSV 방언에도 원하는 구분자를 선택할 수 있으며, 헤더를 모든 키에서 가져올지 첫 레코드에서만 가져올지 선택할 수 있습니다.

JSON → CSV 변환의 일반적인 활용 사례는 무엇인가요?

데이터 작업과 도구 작업 곳곳에서 JSON을 CSV로 평탄화하는 장면이 등장합니다:

  • 데이터 내보내기: API 응답을 CSV 파일로 바꿔서 재무, 운영, 프로덕트 팀이 코드를 작성하지 않고도 Excel이나 Google Sheets에서 열 수 있게 합니다.
  • 보고서 작성: JSON 쿼리 결과를 스프레드시트에 넣어 피벗 테이블, 차트, 또는 빠른 공식 열을 만듭니다. 이런 작업을 원시 JSON을 상대로 하면 매우 고통스럽습니다.
  • 스프레드시트 검토: 중첩된 JSON 구성(설정, 기능 플래그, A/B 변형)을 CSV로 평탄화해 비기술 검토자가 셀 단위로 읽고 편집할 수 있게 합니다.

JSON → CSV 변환 예시는 어떻게 생겼나요?

[{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}]를 붙여넣고 쉼표 구분자로 변환을 누르면 세 줄이 나옵니다: name,age 헤더 행, Alice,30 데이터 행, 그리고 "Bob, Jr.",25 행 — 내부 쉼표가 RFC 4180 인용을 유발합니다. 바로 그 쉼표가 순진한 join을 망가뜨리는 요소인데, 여기서는 RFC 4180 인용이 셀을 온전하게 유지해 줍니다.

이 JSON → CSV 변환기는 전적으로 브라우저에서 실행되나요?

네. 모든 파싱, 평탄화, 쓰기 과정이 브라우저 탭 안의 JavaScript로 로컬에서 실행됩니다. 이 도구는 fetch, XMLHttpRequest, navigator.sendBeacon을 전혀 호출하지 않습니다 — 여러분의 JSON 페이로드는 저희 서버, 제3자 변환 서비스, 어떤 분석 파이프라인에도 전달되지 않습니다. 페이지를 한 번 로드한 뒤에는 오프라인에서도 동작합니다. 런타임 API 의존성이 없는 정적 HTML/CSS/JS 번들이기 때문입니다.

이 변환기가 처리할 수 있는 최대 입력 크기는 얼마인가요?

변환기는 전체 입력을 메모리에 버퍼링하고 메인 스레드에서 동기적으로 실행하므로 실제 한계는 기기 성능에 좌우됩니다. 최신 노트북에서는 약 10 MB의 JSON 배열(약 10만 건의 일반적인 레코드)을 눈에 띄는 지연 없이 CSV로 평탄화합니다. 그 이상에서는 UI가 멈출 수 있습니다. Web Worker와 청크 라이터를 활용한 스트리밍 변환은 다음 단계로 예정되어 있습니다 — 지금은 매우 큰 데이터셋은 붙여넣기 전에 잘라서 사용하세요.

라이터는 쉼표, 인용 부호, 줄바꿈을 포함한 값을 어떻게 처리하나요?

RFC 4180에 따라 처리합니다. 현재 구분자, 큰따옴표, CR, LF 중 하나라도 포함한 값은 큰따옴표로 감싸지고 내부 인용 부호는 겹쳐집니다. 그래서 Bob, Jr. 같은 이름은 두 열이 아닌 단일 셀 "Bob, Jr."이 되고, 여러 줄 설명도 하나의 셀에 남습니다. 바로 여기가 소박한 join(',')이 틀리는 부분입니다.

CSV로 변환할 때 중첩된 JSON 객체는 어떻게 되나요?

중첩 객체는 중첩 객체 토글에 따라 처리됩니다. 기본값인 평탄화 모드에서는 키가 점으로 이어져서 — {"user":{"id":1,"city":"Paris"}}user.iduser.city 두 열이 됩니다. 문자열화 모드에서는 중첩 객체가 단일 JSON 셀 값으로 직렬화되며, RFC 4180 인용 부호 이스케이프가 그대로 유지되어 왕복 시 구조가 보존됩니다. 객체 안의 배열은 두 모드 모두에서 JSON 문자열화됩니다.

CSV 출력에서 어떤 구분자를 사용할 수 있나요?

네 가지: 쉼표(,, RFC 4180 기본값), 세미콜론(;, 유럽 로케일에서 흔함), 탭(\t, TSV 방언), 파이프(|). 다운스트림 도구가 기대하는 것을 선택하세요. 라이터는 선택된 구분자를 포함하는 셀을 이스케이프하므로 선택이 값을 손상시키지 않습니다.

이 JSON → CSV 변환기는 배열을 평탄화하고 RFC 4180을 따르는 출력을 만들어 스프레드시트, 보고서, 코드 리뷰에 바로 붙여넣을 수 있게 합니다 — 단 한 바이트도 업로드하지 않고. 반대 방향이 필요하신가요? CSV → JSON 변환기가 다른 방향을 파싱합니다.