CodeKitHub
JSON 도구

JSON to CSV 변환기

마지막 업데이트:

JSON 객체 배열을 붙여넣으면 올바르게 이스케이프된 깔끔한 CSV를 바로 받아 복사하거나 다운로드할 수 있습니다. 열 헤더는 배열 전체에 등장하는 모든 키를 기준으로 자동 생성되므로, 필드가 없거나 더 많은 행이 섞여 있어도 문제없이 처리됩니다. 모든 과정이 브라우저에서 실행되며 데이터가 기기 밖으로 나가지 않습니다.

이 도구는 무엇인가요?

API와 데이터베이스는 보통 JSON으로 데이터를 반환하지만, 스프레드시트나 엑셀, 구글 시트, 대부분의 데이터 임포트 도구는 CSV를 기대합니다. 이 도구는 그 간극을 메워줍니다. JSON 객체 배열(예: API 응답)을 붙여넣으면 고유 키마다 하나의 열, 객체마다 하나의 행으로 이루어진 CSV를 만들어줍니다.

간단한 방식으로는 놓치기 쉬운 세부사항까지 이 변환은 제대로 처리합니다. 쉼표나 따옴표가 포함된 값은 올바르게 이스케이프되고, 누락된 필드는 오류 없이 빈 셀로 처리되며, 필드 안에 중첩된 객체나 배열은 그냥 사라지는 대신 해당 셀에 JSON 문자열로 직렬화됩니다.

출력은 사실상 CSV 표준으로 통용되는 RFC 4180의 인용 규칙을 따릅니다. 쉼표, 큰따옴표, 줄바꿈이 포함된 필드는 큰따옴표로 감싸고, 필드 안의 따옴표는 두 번 반복해서 표시합니다. 이 덕분에 New York, NY 같은 값이 두 열로 잘못 쪼개지지 않고 한 열에 그대로 유지됩니다.

왜 사용해야 할까요?

  • 자동 헤더 감지 — 모든 객체에 등장하는 키를 합쳐서 열 목록을 만들기 때문에 항목이 들쭉날쭉해도 결과가 깨지지 않습니다.
  • 정확한 CSV 이스케이프 — 쉼표, 따옴표, 줄바꿈이 포함된 값도 올바르게 인용 처리되어 엑셀이나 구글 시트에서 깔끔하게 열립니다.
  • 중첩 데이터 처리 — 필드 안의 객체나 배열은 오류를 내는 대신 JSON 텍스트로 직렬화됩니다.
  • 클립보드 복사 또는 .csv 파일로 바로 다운로드할 수 있습니다.
  • 100% 클라이언트 측 처리 — API 응답이나 내보낸 레코드 같은 데이터가 어디에도 업로드되지 않습니다.

사용 방법

  1. JSON 객체 배열을 붙여넣으세요. 예: [{"name":"Alice","age":30},{"name":"Bob","age":25}]
  2. "CSV로 변환"을 클릭하세요.
  3. 결과를 확인한 뒤 복사하거나 "CSV 다운로드"를 눌러 파일로 저장하세요.
  4. 다운로드한 파일을 엑셀, 구글 시트, 또는 원하는 스프레드시트 도구에서 열어보세요.

예시

입력

[{"name":"Alice","age":30},{"name":"Bob","city":"NYC"}]

결과

name,age,city
Alice,30,
Bob,,NYC

"city"와 "age"는 둘 다 하나의 객체에도 함께 들어있지 않지만 모두 열로 만들어졌습니다 — 누락된 값은 그냥 빈 칸으로 남습니다.

실전 팁

  • 스프레드시트 보고서용으로 API 응답을 변환할 때: 브라우저의 네트워크 탭이나 API 테스트 도구에서 JSON 배열을 그대로 붙여넣고 변환한 뒤 바로 다운로드하면 됩니다. 별도의 스크립트가 필요 없습니다.
  • 필드가 들쭉날쭉한 데이터(예: 폼에서 내보낸 선택적 필드)를 다룰 때: 자동 헤더 감지 덕분에 미리 스키마를 손으로 맞출 필요가 없습니다.
  • 중첩 배열을 담은 하나의 큰 JSON 객체({"users": [...]} 같은 형태)라면, 붙여넣기 전에 배열 부분([...])만 먼저 추출하세요.

열 순서와 완전성이 중요한 이유

미묘하지만 흔한 CSV 버그는 헤더를 손으로 먼저 정해두고 모든 행이 거기에 맞기를 바라며 데이터를 내보낼 때 생깁니다. 1000행 중 50번째 행에만 앞선 행에 없던 필드가 추가로 있다면, 단순히 한 줄씩 처리하는 CSV 작성기는 그 필드를 조용히 누락시키거나 이후 모든 행의 열을 밀리게 만듭니다. 이 도구는 출력을 한 줄도 쓰기 전에 배열 안의 모든 객체를 먼저 훑어 완전하고 정확한 헤더 행을 만들어 이런 실패를 피합니다. 그래서 맨 마지막 객체에 딱 한 번 등장하는 필드조차 자기만의 열을 갖게 되고, 그 열이 없는 다른 모든 행에서는 행 구조가 깨지지 않고 값이 정확히 빈 칸으로 표시됩니다.

자주 묻는 질문

배열이 아니라 JSON 객체 하나만 있어도 되나요?

이 도구는 배열을 기대합니다. 객체 하나만 있다면 대괄호로 감싸주세요. 예를 들어 {"name":"Alice"}를 [{"name":"Alice"}]로 바꾸면 한 행짜리 CSV로 변환됩니다.

필드 안에 중첩된 객체나 배열이 있으면 어떻게 되나요?

오류를 내거나 값이 사라지는 대신 해당 셀 안에 JSON 문자열로 직렬화됩니다(예: {"a":1}을 담은 필드는 CSV에서 "{""a"":1}"라는 텍스트로 올바르게 이스케이프되어 나타납니다). 중첩된 데이터를 별도의 열로 펼치고 싶다면 스키마에 맞춘 별도의 도구가 필요합니다.

제 데이터가 서버로 업로드되나요?

아니요. 변환 작업은 자바스크립트로 브라우저 안에서만 이루어지며 어디로도 전송되지 않습니다. 그래서 내보낸 고객 데이터나 업무 데이터에도 안전하게 사용할 수 있습니다.

왜 CSV에 빈 셀이 생기나요?

배열 안의 일부 객체에만 있는 키가 다른 객체에는 없는 경우, 그 열은 그대로 존재하되 해당 키가 없는 객체의 셀은 비워둡니다. 이렇게 하면 항목이 일관되지 않아도 데이터를 오류 없이 모두 보존할 수 있습니다.

쉼표가 들어간 값 때문에 CSV가 깨지지 않나요?

아니요. 쉼표나 따옴표, 줄바꿈이 들어간 값은 표준 CSV 규칙에 따라 자동으로 따옴표로 감싸지고(내부 따옴표는 이스케이프 처리됩니다), 그 결과 엑셀과 구글 시트에서도 문제없이 올바르게 열립니다.

관련 도구