홈 · 무료 도구 · JSON CSV 변환

JSON CSV 변환

JSON을 붙여넣거나 .json 파일을 놓으면 표로 펼친 뒤 CSV나 .xlsx로 내려받을 수 있습니다. 실제 내보내기 파일이 가진 모양을 그대로 다룹니다 —— data 키로 감싼 레코드, 중첩 객체, 레코드마다 다른 키, 한 줄에 JSON 하나씩 쓰인 NDJSON. 파일은 이 탭에서 읽히고 업로드되지 않습니다. 엑셀에서 열 거라면 .xlsx로 받으세요 —— 이유는 아래에 있습니다.

또는 .json 파일을 끌어다 놓기

.json / .ndjson을 놓으면 아래 상자에 내용이 들어갑니다

JSON 여기에 붙여넣거나, 파일에서 불러온 내용을 고치세요

매달 하는 일인가요? TableDI 2에서 한 번 하고 작업으로 저장하면, 다음 달에는 다시 실행만 하면 됩니다. TableDI 2 무료 다운로드

업로드하지 않습니다. 파일은 이 탭의 JavaScript가 읽을 뿐 컴퓨터 밖으로 나가지 않습니다 — 어떤 서버도 보지 못하며, 탭을 닫으면 사라집니다.

JSON을 CSV로 바꾸는 방법

  1. JSON 붙여넣기. 복사한 응답, .json 파일, 한 줄에 하나씩 쓰인 NDJSON 모두 됩니다. 어디로도 보내지 않습니다.
  2. 어느 배열을 읽었는지 확인. 감싼 응답이면 표 위에 사용한 키(data, results, items …)가 나옵니다.
  3. 열 이름 읽기. 중첩 값은 customer.name 같은 점으로 이은 열이 되고, 문자열 목록은 세미콜론으로 이어 한 칸에 들어갑니다.
  4. 내려받기. 스크립트나 DB에 넣을 거면 CSV, 엑셀에서 열 거면 .xlsx를 고릅니다.

레코드 배열은 대개 한 단계 안쪽에 있습니다

CSV는 직사각형이고 JSON은 나무입니다. 변환이 실패하는 이유는 거의 언제나 첫 행을 쓰기도 전에 정해집니다. 가장 흔한 것은 레코드가 맨 위에 있지 않다는 점입니다. API는 {"data": [ … ]}, {"results": [ … ]}처럼 한 단계 감싸서 돌려줍니다. 감싼 객체를 그대로 펼치면 여러 행이 아니라 아주 넓은 한 행이 나옵니다.

이 페이지는 맨 위 키들 가운데 객체가 들어 있는 첫 번째 배열을 찾아 레코드로 씁니다. 어느 키를 읽었는지는 표 위에 나오니, 엉뚱한 배열을 집었다면 바로 알 수 있습니다.

중첩 객체는 점으로 이은 열이 됩니다

{"고객": {"이름": "김민지", "지역": "서울"}}은 고객.이름, 고객.지역 두 열이 됩니다. 한 칸에 [object Object]가 찍히는 일은 없습니다. 깊이 제한도 없어서 세 단계면 a.b.c가 됩니다.

  • 문자열·숫자 목록 —— ["vip","서울"] —— 은 한 칸에 vip; 서울로 이어 씁니다. 대개 태그라서 열로 쪼개면 표가 들쭉날쭉해집니다.
  • 객체 목록은 번호를 붙인 열로 펼칩니다. 주문 품목 두 개라면 items.0.sku, items.1.sku로 따로 남습니다.
  • 키 이름이 한글이어도 그대로 열 이름이 됩니다. 영문으로 바꾸지 않습니다.

레코드마다 키가 달라도 열이 밀리지 않습니다

세 번째 레코드에만 메모 키가 있는 경우가 흔합니다. 열은 모든 레코드의 키를 합친 것이고, 처음 나온 순서대로 놓입니다. 없는 값은 빈 칸으로 쓰기 때문에 다음 값이 왼쪽 열로 끌려오지 않습니다.

NDJSON(한 줄에 JSON 하나)도 읽습니다

로그 파일이나 BigQuery 내보내기는 대개 한 줄에 완결된 JSON 하나씩, 감싸는 배열도 쉼표도 없이 쓰여 있습니다. 문서 전체로는 올바른 JSON이 아니라서 엄격한 해석기는 거부합니다. 여기서는 전체 해석이 실패하면 줄마다 따로 해석해 보고, 그게 되면 표 위에 NDJSON이라고 표시합니다.

받은 CSV를 엑셀에서 열면 한글이 깨질 수 있습니다

내려받는 CSV는 UTF-8이고, 파일 앞에 BOM을 붙이지 않습니다. 한국어 윈도우의 엑셀은 BOM 없는 CSV를 더블클릭하면 CP949로 읽으려 하므로 한글이 깨져 보입니다. 파일이 망가진 것은 아니고, 스크립트나 DB, 구글 시트에서는 제대로 읽힙니다.

엑셀에서 쓸 거라면 「.xlsx 받기」를 누르세요. .xlsx에는 인코딩이라는 개념이 없어서 깨질 일이 없습니다. CSV가 꼭 필요하다면 엑셀의 데이터 → 텍스트/CSV에서로 가져오면서 UTF-8을 고르면 됩니다. 이미 깨진 CSV가 있다면 CSV 한글 깨짐 복구로 되살릴 수 있습니다.

이 도구가 하지 않는 일

  • 구분자 고르기. CSV는 항상 쉼표로 씁니다. 세미콜론이나 탭이 필요하면 .xlsx로 받은 뒤 원하는 형식으로 저장하세요.
  • 잘못된 JSON 고치기. 해석기가 어디서 멈췄는지 그 메시지를 그대로 보여 줄 뿐, 추측해서 고치지 않습니다.
  • 열 고르기. 모든 키를 열로 만듭니다. 필요 없는 열은 받은 뒤 지우세요.

같은 응답을 매주 바꾸고 있다면

처음 두세 번은 브라우저 탭이 딱 맞습니다. 같은 API 응답을 정해진 날마다 같은 표에 넣고, 어느 날 필드가 빠지면 누군가 알아채야 한다면 그건 더 이상 변환이 아닙니다. TableDI 2는 매 기간 다시 해야 하는 파일 작업을 위한 데스크톱 앱입니다. 원본·규칙·전달 방식을 하나의 작업으로 저장해 두므로, 다음 달에는 새 파일을 넣고 다시 실행하기만 하면 됩니다. 모든 처리는 내 컴퓨터 안에서 이루어집니다.

자주 묻는 질문

JSON이 배열이 아니라 객체인데 변환되나요?

됩니다. 실제 API 응답은 대개 {"data": [ … ]}처럼 레코드가 한 단계 안쪽에 있습니다. 맨 위 키들 가운데 객체가 든 첫 번째 배열을 찾아 쓰고, 어느 키를 읽었는지 표 위에 보여 줍니다. 배열이 전혀 없으면 객체 하나를 한 행으로 만듭니다.

변환한 CSV를 엑셀에서 열었더니 한글이 깨집니다

CSV가 BOM 없는 UTF-8이라서, 엑셀이 더블클릭으로 열 때 CP949로 읽기 때문입니다. 엑셀에서 쓸 거라면 「.xlsx 받기」를 누르세요. .xlsx는 인코딩 개념이 없어서 깨지지 않습니다.

중첩된 JSON은 어떻게 펼쳐지나요?

점으로 이은 열이 됩니다. {"user":{"id":7,"name":"민지"}}는 user.id, user.name 두 열입니다. 문자열 목록은 한 칸에 세미콜론으로 이어지고, 객체 목록은 items.0.sku처럼 번호가 붙은 열로 펼쳐집니다.

NDJSON이나 JSON Lines 파일도 되나요?

됩니다. 전체가 올바른 JSON이 아니면 빈 줄을 뺀 각 줄을 따로 해석하고, 그게 되면 각 줄을 레코드로 씁니다. 표 위에 NDJSON이라고 표시됩니다.

파일 크기 제한이 있나요?

정해진 제한은 없고 브라우저 탭의 메모리가 한도입니다. 미리보기는 처음 200행만 보여 주고 내려받는 파일에는 전부 들어갑니다. 수십 MB 정도는 보통 노트북에서 문제없지만, 그보다 훨씬 크면 스크립트로 처리하는 편이 낫습니다.

JSON이 서버로 전송되나요?

아니요. 붙여넣은 내용과 파일은 이 탭의 자바스크립트가 처리하고, 탭을 닫으면 남지 않습니다.

매달 하는 일인가요?

TableDI 2에서 한 번 해 보고 작업으로 저장합니다. 다음 달에는 새 파일을 넣고 다시 실행하면 됩니다.

macOS(Apple 실리콘·Intel). Windows 버전은 준비 중입니다(그동안 할 수 있는 일). 무료 버전은 체험판이 아닙니다 — 계정도 카드도 필요 없습니다.

2026-09-11 TableDI 팀이 마지막으로 확인했습니다. 이 페이지에 잘못된 내용이 있나요? 알려주세요 — 받은편지함은 하나이고, TableDI를 만드는 사람이 읽습니다.