JSON CSV 변환
API 응답, 내보내기 파일, JSON Lines를 Excel에서 깔끔하게 열리는 CSV로 바꿉니다. 레코드는 자동으로 찾고, 중첩 필드는 읽기 쉬운 열로 펼치며, 큰 ID는 한 자리도 빠짐없이 유지합니다.
- 저장되지 않음
- 대기열 없음, 기다림 없음
- 회원가입 없음, 워터마크 없음
사용 방법
JSON 추가
.json이나 .jsonl 파일을 끌어다 놓거나, JSON을 입력란에 바로 붙여 넣으세요.
레코드 선택
data.items처럼 깊숙한 곳에 있어도 레코드 목록을 자동으로 찾습니다. 배열을 어떻게 쓸지 고르고 미리보기를 확인하세요.
다운로드
원하는 구분 기호와 인코딩으로, Excel, Google Sheets, 데이터베이스에 바로 쓸 수 있는 CSV를 받습니다.
트리를 격자로 펼치기
JSON은 트리이고 CSV는 사각형이며, 변환 전체가 하나를 다른 하나로 바꾸는 문제입니다. 깔끔한 경우는 모든 객체가 같은 키를 가진 객체 배열 입니다. 객체 하나가 한 행, 키 하나가 한 열이 되며, 잃는 것이 없습니다. 대부분의 API 응답과 내보내기 파일이 이런 모양이라 대개는 그냥 잘 됩니다. 곤란한 경우는 모두 이런 모양이 아닌 문서에서 생깁니다.
중첩 객체는 키를 이어 붙여 펼칩니다. 그래서 고객 안의 주소 객체는 address.city, address.postcode 같은 열이 됩니다. 어떤 스프레드시트든 다룰 수 있지만 어떤 표준도 정의하지 않은 관례입니다. 일부 객체에만 있는 키는 그 키가 없는 행에서 빈 열이 되며, 이것이 옳은 답입니다. 대안은 일부 레코드에만 있는 데이터를 버리는 것이기 때문입니다.
중첩 배열은 격자가 정말로 따라갈 수 없는 부분입니다. 주문 품목 세 개가 든 레코드 하나는 세 행이 아니라 목록을 담은 한 행입니다. 세 행으로 바꾸면 다른 모든 필드가 중복되고 데이터의 의미가 슬그머니 바뀝니다. 그래서 객체 배열 하나만 행으로 펼치고, 나머지 배열은 해당 셀에 텍스트로 씁니다. 주문이 아니라 주문 품목이 필요하다면 변환 대상을 그 배열로 지정하세요. 목록 두 개가 나란히 있는 트리에는 하나뿐인 정답 사각형이 없으며, 어느 쪽을 고를지는 여러분만 정할 수 있습니다.
내보낼 때 발목을 잡는 세부 사항이 두 가지 있습니다. 쉼표, 따옴표, 줄바꿈이 든 값은 살아남도록 따옴표로 감싸는데, 이는 올바른 CSV이지만 원시 파일을 들여다보면 이상해 보입니다. 그리고 긴 숫자 식별자는 CSV가 스프레드시트에 들어가는 순간 위험해집니다. Excel은 이를 숫자로 읽어 15자리를 넘으면 반올림하고 앞자리 0을 없애는데, 이는 변환이 아니라 스프레드시트가 만드는 문제입니다.
다른 작업이 필요할 때
모양을 추측하지 않고 직접 정해야 할 때는 jq 가 맞는 도구입니다. jq -r '.orders[] | [.id, .customer.name, .total] | @csv' 는 원하는 수준에서 원하는 필드만 정확히 골라내며, 이는 자동 평탄화 도구가 줄 수 없는 제어력입니다. 스트리밍도 되므로 파일 크기도 더 이상 고민거리가 아닙니다.
중첩 데이터 전반에는 Miller 의 mlr --ijson --ocsv flatten 과 Python의 pandas.json_normalize 가 얼마나 깊이 펼칠지, 목록은 어떻게 할지를 명시적으로 제어하게 해 줍니다. 그리고 JSON이 표 형태가 아니라 정말로 계층 구조라면, CSV로 변환하는 것 자체가 잘못된 생각일 수 있습니다. 데이터베이스나 줄 단위 JSON 파일은 격자가 버리려는 구조를 그대로 유지합니다.
자주 묻는 질문
중첩 JSON은 어떻게 열이 되나요?
중첩된 필드마다 경로 이름을 딴 열 하나가 됩니다. {"address": {"city": "Oslo"}}는 address.city라는 열이 됩니다. 열은 알파벳순이 아니라 데이터에 처음 나타난 순서대로 배치되며, 필드가 없는 레코드는 그 셀이 비어 있을 뿐입니다.
배열은 어떻게 되나요?
직접 고릅니다. 값을 한 셀에 합치거나("red; green"), 번호가 붙은 열로 펼치거나(tags.0, tags.1), JSON 텍스트로 그대로 두거나, 주문 품목처럼 객체 배열이라면 상위 필드를 반복하며 항목마다 한 행씩 쓸 수 있습니다.
큰 숫자도 정확히 유지되나요?
네. Twitter, Discord, 64비트 데이터베이스 ID처럼 JavaScript가 표현할 수 있는 범위를 넘는 ID도 한 자리씩 그대로 복사합니다. 대부분의 변환기는 1234567890123456789를 1234567890123456800으로 말없이 반올림합니다.
JSON Lines(NDJSON)도 지원하나요?
네. 한 줄에 JSON 객체 하나씩 있는 파일은 자동으로 인식하며, 각 줄이 한 행이 됩니다.
JSON에 오류가 있으면요?
문제가 되는 텍스트를 강조해 정확한 줄과 열을 알려 드리고, 예를 들어 끝에 붙은 쉼표나 JavaScript 코드에서 복사해 온 작은따옴표처럼 쉬운 말로 설명해 드립니다.
제 데이터가 어딘가에 저장되나요?
아니요. JSON을 읽고 CSV를 쓰는 작업은 여기서 이뤄지며, 어디에도 전송되지 않고 아무것도 저장하지 않습니다.
참고: 한 번에 객체 배열 하나만 행으로 펼칠 수 있으며, 다른 배열은 해당 셀에 기록됩니다. 아주 큰 파일은 브라우저 메모리에 따라 제한됩니다.
내 웹사이트에 이 도구 넣기
블로그, 수업 페이지, 도움말 글 어디에나 무료로 넣을 수 있습니다. 코드 한 줄만 붙여 넣으면 방문자가 페이지에서 바로 사용할 수 있습니다.