내가 쓴 최초의 JSON-CSV 변환기는 생산 기간 동안 3일 동안 지속되었습니다.
그것은 "spreadsheet" 로 내보내기; Laravel 관리자 패널의 버튼,그리고 내 변환 로직은 - I'm 이 자랑스럽지 않다 - 이었다 values.join(","). 그것은 테스트를 통해 항해. 그런 다음 사용자가 한 회사의 이름이 "Smith, 존스 & amp; 파트너, & quot; 및 오른쪽으로 한 위치를 이동 한 후 모든 열이 고객 목록을 내보냈습니다. 그들의 회계사는 전화 번호가 이메일 열에 있다는 것을 알아 차리기 전에 340 행의 잘못 정렬 된 데이터를 가져 왔습니다.
CSV isn't 의 쉼표는 string-join 할 수 있는 구분 기호입니다. It's a grammar,defined in RFC 4180는, 실제 탈출 규칙으로. 그 버그는 왜 JSON에서 CSV로 변환기 나는 나중에 Toolz.dev를 위해 탈출을 협상 할 수없는 것으로 취급합니다 - 그리고이 가이드가 행복한 길뿐만 아니라 가장자리 케이스에서 실시간으로 보내는 이유.
제가 실제로 사용하는 다섯 가지 방법은 각각이 승리할 때와 각각이 물리는 곳입니다.
TL;DR: 일회성 변환의 경우 JSON을 에 붙여넣습니다 Toolz.dev JSON 을 CSV 변환기로- 점 표기법으로 중첩된 개체를 평평하게 만들고 RFC 4180 에 따라 올바르게 이스케이프되며 브라우저에서 100% 실행됩니다. 반복 작업의 경우 스크립트:
pd.json_normalize()파이썬이나json2csv패키지는 Node.로 유효성을 검사합니다 JSON 포맷터 첫째, 원래 JSON을 유지하십시오. CSV 평탄화는 단방향입니다.
이미 JSON을 가지고 있는데 왜 CSV가 필요합니까?
당신의 자료 don't 를 필요로 하는 사람들이 당신의 맨끝에서 살기 때문에. 모든 변환 요구 I've 이제까지 얻어진 것은 5 개의 상황의 한에 감소시킨다:
분석가는 스프레드시트에서 작업합니다. Excel,Google Sheets,Tableau, Power BI - 모두 기본적으로 CSV 를 흡입하고 중첩된 JSON 에 질식합니다. API 출력을 CSV 로 변환하는 것은 엔지니어링 데이터가 비즈니스 측면에 도달하는 방법입니다.
데이터베이스 대량 가져오기 플랫 파일. PostgreSQL's COPY 및 MySQL's LOAD DATA 표 형식의 입력을 원합니다. JSON 열이 존재하지만 실제 관계형 테이블에 로드하는 것은 먼저 평평하게 하는 것을 의미합니다.
마이그레이션에는 링구아 프랑카가 필요합니다. NoSQL 저장소와 관계형 저장소 사이 또는 두 SaaS 플랫폼 사이에서 데이터를 이동하는 CSV는 양쪽 끝이 안정적으로 이해하는 형식입니다.
규정 준수는 플랫 파일을 좋아합니다. 일부 보관 요구 사항은 사람이 읽을 수 있는 형식을 지정합니다. CSV 는 지금부터 수십 년 후 무엇이든 열립니다.
이해 관계자 can't 읽기 JSON. 제품 관리자가 "can I get that as a spreadsheet?" 가장 일반적인 단일 트리거입니다. 그것은 내 깨진 내보내기 버튼에 대한 트리거했다.

JSON-CSV 변환이 어려운 이유는 무엇입니까?
플랫 JSON 은 사소한 것입니다. 이:
[
{"id": 1, "name": "Alice", "email": "[email protected]", "age": 30},
{"id": 2, "name": "Bob", "email": "[email protected]", "age": 25}
]
이 됩니다. 헤더 키, 행 요소:
id,name,email,age
1,Alice,[email protected],30
2,Bob,[email protected],25
하지만 실제 API 응답은 결코 평평하지 않습니다. 그들은 이렇게 보입니다:
[
{
"id": 1,
"name": "Alice",
"address": {"street": "123 Main St", "city": "San Francisco", "state": "CA"},
"skills": ["JavaScript", "Python", "Go"]
}
]
CSV 는 "inside." 의 개념이 없습니다; 그래서 당신은 평평하게하는 전략을 선택하고,각각은 비용이 있습니다:
점 표기 평탄화- 중첩된 키는 복합 헤더가 됩니다:
id,name,address.street,address.city,address.state,skills
1,Alice,123 Main St,San Francisco,CA,"JavaScript; Python; Go"
배열에 대한 색인화된 열입니다- skills.0, skills.1, skills.2. 예측 가능하지만 14 개의 스킬을 가진 레코드는 모든 사람을 위해 14 개의 컬럼을 생성합니다.
JSON으로 인코딩된 셀- 원시 JSON을 셀에 채우고 이중 인용합니다. 손실이 없고 읽을 수 없으며 분석가를 슬프게 만듭니다.
결합된 배열을 사용한 점 표기법은 사람이 소비하는 데 적합한 기본값입니다. it's what the Toolz.dev 변환기 생성. 인덱스된 열은 다운스트림 코드가 주소 지정이 가능한 각 요소를 필요로 할 때 승리합니다. JSON-in-cells 는 라운드 트립을 위한 최후의 수단입니다.
방법 1: 어떻게 CSV 온라인 JSON 을 변환합니까?
에 가장 좋은: 일회성 변환, 비개발자, 수십 MB 미만.
- 열다 JSON에서 CSV로 변환기.
- JSON을 붙여넣으세요 - 객체 배열, 또는 단일 객체.
- 이 도구는 구조를 감지하고 중첩된 개체를 점 표기법으로 평평하게 만들고 CSV를 즉시 렌더링합니다.
- 복사하거나 다운로드하세요
.csv.
내가 아무것도 비 반복에 대 한 스크립트를 통해이 기본 설정 이유: 제로 설정, 올바른 RFC 4180 탈출 (그 교훈을 배운), 일관성이 없는 개체에 걸쳐 자동 키-유니온, 그리고-때문에 it's 클라이언트 측-방금 붙여넣은 고객 이메일로 가득 API 응답은 결코 당신의 기계를 떠나지 않습니다. watch the Network tab if you don't believe me; that's the test I apply to every online converter, and most fail it.
Where it's the wrong tool: 반복되는 변환 (스크립트 it) 과 깊이 병적인 중첩 where you'll want to hand-pick the flattening strategy.

방법 2: JavaScript에서 JSON을 CSV로 변환하려면 어떻게 해야 합니까?
에 가장 좋은: 파이프라인, 노드 서비스, 사용자 정의 변환 로직을 구축하세요.
Here's 최소한의 올바른 버전 - 내 3 일간의 재앙이 건너 뛰었던 부분 인 탈출을 주목하십시오:
function jsonToCsv(jsonArray) {
if (!jsonArray.length) return "";
const headers = Object.keys(jsonArray[0]);
const csvRows = [
headers.join(","),
...jsonArray.map(row =>
headers.map(header => {
const value = row[header] ?? "";
// RFC 4180: double embedded quotes, wrap anything containing , " or newline
const escaped = String(value).replace(/"/g, '""');
return /[,"\n\r]/.test(escaped) ? `"${escaped}"` : escaped;
}).join(",")
)
];
return csvRows.join("\n");
}
중첩 입력의 경우 먼저 평평하게 하고 키를 결합합니다. 첫 번째 개체에서만 헤더를 가져오는 것은 손으로 굴린 변환기에서 두 번째로 일반적인 버그입니다:
function flattenObject(obj, prefix = "") {
const result = {};
for (const [key, value] of Object.entries(obj)) {
const newKey = prefix ? `${prefix}.${key}` : key;
if (value && typeof value === "object" && !Array.isArray(value)) {
Object.assign(result, flattenObject(value, newKey));
} else if (Array.isArray(value)) {
result[newKey] = value.join("; ");
} else {
result[newKey] = value;
}
}
return result;
}
function nestedJsonToCsv(jsonArray) {
const flattened = jsonArray.map(item => flattenObject(item));
// Union of ALL keys, not just the first object's
const headers = [...new Set(flattened.flatMap(Object.keys))];
// ...then emit rows exactly as in jsonToCsv above
}
아니면 손으로 굴리는 것을 건너뛰세요 json2csv 패키지는 수년간 이러한 가장자리를 처리해 왔습니다:
import { Parser } from "json2csv";
const parser = new Parser({ flatten: true });
const csv = parser.parse(data);
방법 3: 파이썬에서 JSON 을 CSV 로 변환하는 방법은 무엇입니까?
에 가장 좋은: 데이터 과학 워크플로, 이미 팬더에 닿는 모든 것.
판다 한 줄 커버 플랫 JSON:
import pandas as pd
df = pd.read_json("data.json")
df.to_csv("output.csv", index=False)
정말 유용한 기능은 다음과 같습니다 pd.json_normalize()- 중첩된 API 응답을 위해 특별히 구축되었습니다:
import pandas as pd
import requests
response = requests.get("https://api.example.com/users")
df = pd.json_normalize(response.json())
print(df.columns.tolist())
# ['id', 'name', 'skills', 'address.street', 'address.city', 'address.state']
# Arrays still need a decision — join them explicitly:
df["skills"] = df["skills"].apply(lambda x: "; ".join(x) if isinstance(x, list) else x)
df.to_csv("output.csv", index=False)
참고하세요 json_normalize 평평하게 중첩됩니다 객체 하지만 잎 배열 파이썬 목록으로 - 조인 단계를 건너뛰면 CSV 셀에 다음이 포함됩니다 ['JavaScript', 'Python'] 그대로.모두가 이것을 한번 때린다.
팬더가 없나요? 표준 라이브러리는 플랫 JSON 벌금을 처리합니다:
import json, csv
with open("data.json") as f:
data = json.load(f)
with open("output.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
방법 4: 명령줄에서 JSON을 CSV로 어떻게 변환합니까?
에 가장 좋은: 쉘 스크립트, CI 파이프라인, 팬더 설치가 너무 많은 서버.
jq 기본적으로 함께합니까 @csv, 올바르게 탈출합니다:
cat data.json | jq -r '
(.[0] | keys_unsorted) as $keys |
($keys | @csv),
(.[] | [.[$keys[]]] | @csv)
'
csvkit's in2csv 생각이 낮은 옵션입니다:
pip install csvkit
in2csv data.json > output.csv
그리고 밀러(mlr) 같은 패스에서 필터링을 원할 때 빛납니다:
mlr --json2csv filter '$age > 25' data.json > output.csv
구성성이 포인트 - curl -s api.example.com/data | jq ... > report.csv cron 한 줄에 완전한 API-스프레드시트 파이프라인입니다.
방법 5: JSON을 Excel 또는 Google 시트로 직접 가져올 수 있습니까?
에 가장 좋은: 비개발자, 실시간 상쾌한 데이터, 일회성 가져오기.
엑셀: 데이터 → 데이터 가져오기 → 웹에서 API URL 을 붙여넣고 Power Query 를 사용하면 로드하기 전에 중첩된 레코드를 확장할 수 있는 시각적 편집기가 제공됩니다. 동일한 소스를 반복적으로 새로 고치는 데 정말 좋습니다.
구글 시트: 확장 → Apps 스크립트, 작은 가져오기 기능:
function importJSON(url) {
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
if (!Array.isArray(data) || data.length === 0) return [["No data"]];
const headers = Object.keys(data[0]);
const rows = data.map(item => headers.map(h => item[h] ?? ""));
return [headers, ...rows];
}
셀에서 다음과 같이 사용됩니다 =importJSON("https://api.example.com/data").
정직한 방법: 일회성 수입의 경우 다음과 같이 변환합니다 온라인 툴 그리고 CSV 를 여는 것은 둘 중 하나보다 빠릅니다. 스프레드시트 네이티브 경로는 데이터가 일정에 따라 새로 고쳐질 때만 설정 비용을 얻습니다.
어떤 방법을 선택해야 합니까?
| 방법 | 설정 | 중첩 JSON | 반복 사용 | 데이터는 로컬로 유지됩니다 |
|---|---|---|---|---|
| 온라인 변환기 | 없음 | 자동 | 매뉴얼 매번 | 예 - 클라이언트 측 |
| 자바스크립트 / json2csv | npm 설치 | 통해 flatten |
우수한 | 예 |
| 파이썬 / 팬더 | pip 설치 | json_normalize |
우수한 | 예 |
| jq / csvkit / mlr | 패키지 관리자 | 수동 경로 | 우수함(cron/ci) | 예 |
| 엑셀/시트 | 계정/앱 | 파워 쿼리 UI | 좋음(자동 새로 고침) | 엑셀: 예; 시트: Google 서버 |
내 규칙: 세 번째 시간까지 브라우저 도구에 대한 도달 I & #39;m 데이터의 동일한 모양을 변환 - 다음 스크립트가됩니다.
JSON-CSV 변환을 중단하는 Edge 사례는 무엇입니까?
4 개의 함정은 거의 각 끊긴 수출 I've 를 위해 설명한다 제충했다:
일관되지 않은 키. 개체 1이 있습니다 email, 객체 2가 있습니다 phone,객체 3 에는 둘 다 있습니다. 첫 번째 객체에서만 헤더를 가져오고 데이터를 자동으로 드롭합니다. 수정 사항은 모든 객체에 걸쳐 키 결합이며 누락된 값은 빈 셀로 표시됩니다. 좋은 도구는 자동으로 수행됩니다.
탈출하지 못한 특수 캐릭터. The "Smith,Jones & Partners" problem. RFC 4180 에 따라: 쉼표,따옴표 또는 개행 문자를 포함하는 값을 큰따옴표로 묶고 포함된 따옴표를 두 배로 늘립니다 ("He said ""hello""").
대용량 파일. 과거 100 MB 정도,전체 파일 구문 분석은 고통스러워진다. 대신 스트림 - jq 스트림,팬더는 청크로 읽으며 JSON Lines 형식 (한 줄에 하나의 개체) 은 둘 다 쉽게 만듭니다. 최대 수십 MB 의 파일의 경우 there's 업로드가 없으므로 브라우저 도구가 괜찮습니다.
인코딩. 이름과 주소는 ASCII 가 아닌 문자를 가지고 있습니다. 모든 것을 UTF-8 을 끝에서 끝까지 유지하고 역사적으로 BOM 이 UTF-8 을 올바르게 감지하기를 원했던 Windows 에서 Excel 을 의심하십시오.
그리고 선택 isn't 인 1 개의 연습: 변환하기 전에 검증하십시오. 잘린 JSON 파일은 변환 중간에 혼란스럽게 실패하지만 분명히 변환 중입니다 JSON 포맷터. 유효성 검사의 30 초는 "why 의 나의 CSV 는 비워진 십분 친다."
자주 묻는 질문
JSON 을 온라인에서 무료로 CSV 로 변환하려면 어떻게 해야 합니까?
JSON을 붙여넣으세요 Toolz.dev의 JSON에서 CSV로 변환기- 즉시 중첩된 개체를 평평하게 만들고 이스케이프 처리한 CSV 를 생성한 다음 결과를 복사하거나 다운로드할 수 있습니다. 가입이 없고 처리가 100% 클라이언트 측이므로 데이터가 브라우저에서 떠나지 않습니다.
중첩된 JSON 을 CSV 로 변환할 수 있습니까?
예. 중첩된 객체는 점 표기법 헤더로 평평해집니다(address.city), 및 배열은 구분된 문자열로 결합되거나 인덱스된 열로 분할됩니다. The Toolz.dev 변환기 점 표기법을 자동으로 적용합니다; 파이썬에서는 pd.json_normalize() 도 같이 한다.
Python 에서 JSON 파일을 CSV 로 변환하려면 어떻게해야합니까?
import pandas as pd; pd.read_json("data.json").to_csv("output.csv", index=False) 평면 JSON 의 경우. 중첩된 구조의 경우,사용 pd.json_normalize(data) 먼저, 나뭇잎 목록을 그대로 정규화하므로 모든 배열 열을 직접 결합하는 것을 잊지 마십시오.
What's 매우 큰 JSON 파일을 변환하는 가장 좋은 방법은 무엇입니까?
로드보다는 스트림: jq 명령줄에서,또는 청크 리드가 있는 팬더. 파일을 JSON Lines (줄당 하나의 객체) 로 변환하면 먼저 스트리밍이 훨씬 간단해집니다. 브라우저 도구는 최대 수십 MB 까지 편안합니다; ~100 MB 이상에서는 명령줄을 사용하십시오.
CSV 를 JSON 으로 다시 변환하려면 어떻게 해야 하나요?
X-1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X CSV를 JSON으로 변환합니다 트립을 반전시킵니다 - 각 행은 헤더 행에 의해 키된 객체가 됩니다. 프로그래밍 방식: pd.read_csv("data.csv").to_json(orient="records").
내 CSV에 일부 값에 대한 따옴표가 있는 이유는 무엇입니까?
That's 버그가 아닌 올바른 동작. RFC 4180 은 쉼표,줄 바꿈 또는 따옴표가 포함된 모든 값 주위에 큰 따옴표가 필요하며 포함된 따옴표는 두 배로 늘어납니다. 스프레드시트와 파서는 읽기에서 이를 제거합니다.
JSON-CSV 변환은 무손실입니까?
플랫 JSON 의 경우,예. 중첩된 JSON 의 경우 값은 살아남지만 계층 does't - dot-notation 헤더는 플랫튼입니다 표현그리고 당신은 can't 항상 그들로부터 정확한 원래 중첩을 재구성합니다. 소스 JSON 을 유지; CSV 를 파생 된보기로 취급합니다.
변환 후 열이 잘못 정렬되는 이유는 무엇입니까?
거의 항상 탈출 실패: 쉼표가 포함 된 값 was't 인용, 그래서 파서는 그 시점부터 여분의 열을 참조. It's 내 라라벨 내보내기 버튼에서 정확한 버그. 문자열 결합 값보다는 RFC 4180 을 구현하는 변환기를 사용하여 - 그리고 당신이 자신의 쓴 경우, 같은 값으로 테스트 Smith, Jones & Partners.
Excel 또는 Google Sheets 에서 JSON 을 CSV 로 변환하려면 어떻게 해야 합니까?
두 앱 모두 붙여넣기가 아닌 도우미를 통해 JSON 을 가져옵니다. Excel 에서는 Data → Get Data → From File → From JSON 을 사용한 다음 Power Query 및 Close & Load 에서 쿼리를 평평하게 만듭니다. Google Sheets 에서는 임시 Apps Script 를 통해 작은 배열을 붙여넣거나 로 변환합니다 JSON에서 CSV로 변환기 먼저 결과 파일을 엽니다. 일반적으로 일회성 파일의 경우 더 빠른 경로입니다.
어떤 JSON to CSV 방법을 사용해야 하나요?
빠른 일회성을 위해 클라이언트 측 변환기가 가장 빠르고 데이터를 비공개로 유지합니다. 반복 가능한 파이프라인의 경우 Python을 pandas와 함께 사용하십시오; 거대한 파일의 경우 스트리밍하세요 jq 명령줄에; 그리고 개발자가 아닌 사람이 워크플로를 소유할 때만 스프레드시트 가져오기에 도달합니다. 도구를 file's 크기만 사용하는 것이 아니라 작업을 반복하는 빈도와 일치시킵니다.
메서드를 작업에 일치시킵니다
JSON-to-CSV 는 회사 이름의 쉼표가 340 행의 고객 데이터를 한 열 오른쪽으로 이동시킬 때까지 해결된 한 줄처럼 보입니다. 방법은 형식을 존중하는 것보다 덜 중요합니다: RFC 4180 에 따라 이스케이프,키 조합,일부러 평탄화 전략 결정,원본 JSON 유지.
다음 일회성 변환의 경우 JSON에서 CSV로 변환기 는 열다섯 번째의 경로이다. validate first with the JSON 포맷터그리고 데이터가 다시 이동해야 할 때 CSV를 JSON으로 변환합니다 루프를 닫습니다. 브라우저의 세 가지 모두 데이터 서버 측을 볼 수 없습니다.
관련 기사:
- JSON 도구에 대한 최종 가이드(2026)
- JSON 온라인 포맷 방법: 예제가 포함된 전체 가이드
- 무료 온라인 텍스트 도구 가이드



