Command Palette

Search for a command to run...

JSON에서 CSV로의 전환: 개발자가 2026년에 사용하는 5가지 방법

JSON에서 CSV로의 전환: 개발자가 2026년에 사용하는 5가지 방법

T
Toolz Team
|Jun 27, 2026|15 최소 읽기

데이터 도구 모음의 일부

내가 쓴 최초의 JSON-CSV 변환기는 생산 기간 동안 3일 동안 지속되었습니다.

그것은 "spreadsheet&quot 로 내보내기; 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?" 가장 일반적인 단일 트리거입니다. 그것은 내 깨진 내보내기 버튼에 대한 트리거했다.

Diagram showing JSON data flowing through conversion to CSV format with use cases branching to spreadsheets, databases, and analytics


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.&quot 의 개념이 없습니다; 그래서 당신은 평평하게하는 전략을 선택하고,각각은 비용이 있습니다:

점 표기 평탄화- 중첩된 키는 복합 헤더가 됩니다:

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 미만.

  1. 열다 JSON에서 CSV로 변환기.
  2. JSON을 붙여넣으세요 - 객체 배열, 또는 단일 객체.
  3. 이 도구는 구조를 감지하고 중첩된 개체를 점 표기법으로 평평하게 만들고 CSV를 즉시 렌더링합니다.
  4. 복사하거나 다운로드하세요 .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.

Diagram of the toolz.dev JSON to CSV converter showing JSON input on the left and CSV output on the right


방법 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으로 변환합니다 루프를 닫습니다. 브라우저의 세 가지 모두 데이터 서버 측을 볼 수 없습니다.


관련 기사:

Frequently Asked Questions

Paste your JSON into the JSON to CSV Converter on toolz.dev — it instantly generates CSV with nested objects flattened and escaping handled, then lets you copy or download the result. No signup, and processing is 100% client-side, so your data never leaves your browser.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!