Command Palette

Search for a command to run...

המרת JSON ל-CSV: 5 שיטות שמפתחים משתמשים ב-2026

המרת JSON ל-CSV: 5 שיטות שמפתחים משתמשים ב-2026

T
Toolz Team
|Jun 27, 2026|15 קריאה דקות

חלק מאוסף כלי נתונים

ממיר JSON ל-CSV הראשון שכתבתי אי פעם נמשך שלושה ימים בייצור.

זה היה "ייצוא לגיליון אלקטרוני" כפתור בפאנל ניהול של Laravel, והיגיון ההמרה שלי היה - I' אני לא גאה בזה - values.join(","). זה הפליג דרך בדיקה. ואז משתמש ייצא רשימת לקוחות שבה חברה אחת נקראה "Smith, Jones & Partners," וכל עמודה אחריה עברה עמדה אחת ימינה. רואה החשבון שלהם ייבא 340 שורות של נתונים לא מיושרים לפני שמישהו שם לב שמספרי הטלפון נמצאים בעמודת האימייל.

הפסיק ב-CSV הוא't מפריד אתה יכול לחבר מחרוזת בדרך שלך. זה' הוא דקדוק, המוגדר ב RFC 4180, עם חוקי בריחה בפועל. הבאג הזה הוא הסיבה לכך ממיר JSON ל-CSV מאוחר יותר בניתי עבור Toolz.dev מתייחס בריחה כמו לא סחיר - ולמה מדריך זה מבלה זמן אמת על המקרים קצה, לא רק את הנתיב שמח.

הנה חמש השיטות שאני בעצם משתמש בהן, כשכל אחת מנצחת, ושכל אחת נושכת.

TL;DR: להמרות חד פעמיות, הדבק את ה-JSON שלך ב- Toolz.dev JSON ל-CSV ממיר- הוא משטח אובייקטים מקוננים עם סימון נקודות, בורח בצורה נכונה לכל RFC 4180, ופועל ב-100% בדפדפן שלך. לעבודות חוזרות, סקריפט את זה: pd.json_normalize() בפייתון או ה json2csv חבילה בצומת. אמת עם ה פורמט JSON ראשית, ולשמור על JSON המקורי - CSV השטחה היא חד כיוונית.


למה אתה צריך CSV כשכבר יש לך JSON?

כי האנשים שצריכים את הנתונים שלך don't גרים בטרמינל שלך כל בקשת המרה I' אי פעם קיבלו מצטמצמת לאחד מחמישה מצבים:

אנליסטים עובדים בגיליונות אלקטרוניים. Excel, Google Sheets, Tableau, Power BI - כולם שואפים CSV באופן מקורי ונחנקים מ-JSON מקונן. המרת פלט API ל-CSV היא הדרך שבה נתונים הנדסיים מגיעים לצד העסקי.

מסדי נתונים מייבאים קבצים שטוחים בתפזורת. PostgreSQL's COPY ו-mysql's LOAD DATA רוצה קלט טבלאי עמודות JSON קיימות, אבל טעינה לטבלאות יחסיות אמיתיות פירושה השטחה תחילה.

הגירות זקוקות לשפה פרנקה. העברת נתונים בין חנות NoSQL לחנות יחסית, או בין שתי פלטפורמות SaaS, CSV הוא הפורמט ששני הקצוות מבינים בצורה מהימנה.

תאימות אוהבת קבצים שטוחים. כמה דרישות ארכיון מציינות פורמטים הניתנים לקריאה על ידי אדם. CSV נפתח בכל דבר, בעוד עשרות שנים.

בעלי עניין יכולים 't לקרוא JSON. מנהל מוצר שואל את " האם אני יכול לקבל את זה כגיליון אלקטרוני?" הוא הטריגר הנפוץ ביותר. זה היה הטריגר לכפתור הייצוא השבור שלי.

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." אז אתה בוחר אסטרטגיית השטחה, ולכל אחד יש עלות:

השטחת סימון נקודות- מפתחות מקוננים הופכים לכותרות מורכבות:

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 מה ה Toolz.dev ממיר מייצר. עמודות באינדקס מנצחות כאשר קוד במורד הזרם זקוק לכל רכיב שניתן להתייחס אליו. JSON-in-cells הוא מוצא אחרון לנסיעה הלוך ושוב.


שיטה 1: כיצד אתה ממיר JSON ל-CSV באינטרנט?

הכי טוב עבור: המרות חד פעמיות, לא מפתחים, כל דבר מתחת לכמה עשרות מגה-בייט.

  1. פתח את ממיר JSON ל-CSV.
  2. הדבק את ה-JSON שלך - מערך של אובייקטים, או אובייקט בודד.
  3. הכלי מזהה את המבנה, משטח אובייקטים מקוננים לסימון נקודות, ומעבד את ה-CSV באופן מיידי.
  4. תעתיקו את זה, או תורידו את .csv.

הסיבה שאני ברירת מחדל לכך על פני סקריפט עבור כל דבר שאינו חוזר: אפס הגדרה, RFC 4180 נכון בורח (למד את השיעור הזה), איחוד מפתחות אוטומטי על פני אובייקטים לא עקביים, ו - כי זה 's בצד הלקוח - תגובת ה - API מלא במיילים של לקוחות שהדבקת זה עתה לעולם לא עוזב את המחשב שלך צפה בכרטיסייה רשת אם אתה עושה & #39; אל תאמין לי; that's המבחן שאני מיישם על כל ממיר מקוון, ורובם נכשלים בו.

איפה זה ' הוא הכלי הלא נכון: המרות חוזרות (תסריט את זה) וקינון פתולוגי עמוק שבו אתה ' תרצה לבחור ביד את אסטרטגיית ההשטחה.

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


שיטה 2: כיצד ממירים JSON ל-CSV ב-JavaScript?

הכי טוב עבור: בניית צינורות, שירותי צומת, לוגיקה של טרנספורמציה מותאמת אישית.

Here's הגרסה המינימלית הנכונה - שימו לב לבריחה, שהיא החלק שהאסון שלי בן שלושת הימים דילג עליו:

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 ב-Python?

הכי טוב עבור: זרימות עבודה של מדעי הנתונים, כל דבר שכבר נוגע בפנדות.

הפנדות one-liner מכסה 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 משטחת מקוננת אובייקטים אבל עוזב מערכים כרשימות Python - אם תדלג על שלב ההצטרפות, תאי ה-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 הוא צינור שלם של API לגיליון אלקטרוני בקו אחד של cron.


שיטה 5: האם אתה יכול לייבא JSON ישירות ל-Excel או ל-Google Sheets?

הכי טוב עבור: לא מפתחים, נתונים מרעננים חיים, יבוא חד פעמי.

אקסל: נתונים → קבל נתונים → מהאינטרנט, הדבק את כתובת ה-API ו-Power Query נותן לך עורך חזותי להרחבת רשומות מקוננות לפני הטעינה. באמת טוב לרענון חוזר של אותו מקור.

גיליונות גוגל: הרחבות → Apps Script, ואז פונקציית אחזור קטנה:

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 מקונן שימוש חוזר הנתונים נשארים מקומיים
ממיר מקוון אף אחד אוטומטי ידני בכל פעם כן - צד הלקוח
JavaScript / json2csv npm להתקין ויה flatten מעולה כן
פייתון / פנדות התקנת pip json_normalize מעולה כן
jq / csvkit / mlr מנהל חבילות נתיבים ידניים מצוין (cron/CI) כן
אקסל / גיליונות חשבון/אפליקציה ממשק משתמש של Power Query טוב (רענון אוטומטי) אקסל: כן; גיליונות: שרתי גוגל

הכלל שלי: להגיע לכלי הדפדפן עד הפעם השלישית I'm המרת אותה צורה של נתונים - ואז זה הופך לסקריפט.


אילו מקרי קצה שוברים המרת JSON ל-CSV?

ארבע מלכודות מהוות כמעט כל ייצוא שבור I've ניפוי באגים:

מפתחות לא עקביים. לאובייקט 1 יש email, לאובייקט 2 יש phone, לאובייקט 3 יש את שניהם קח כותרות מהאובייקט הראשון בלבד ואתה משליך נתונים בשקט התיקון הוא איחוד מפתחות על פני כל האובייקטים, עם ערכים חסרים כמו תאים ריקים - מה שכלים טובים עושים באופן אוטומטי.

דמויות מיוחדות שלא נמלטו. ה-"Smith, Jones & Partners" בְּעָיָה. לכל RFC 4180: ערכי עטיפה המכילים פסיקים, מרכאות או שורות חדשות במרכאות כפולות, והכפילו כל מרכאות מוטבעות ("He said ""hello""").

קבצים גדולים. לאחר 100 מגה-בייט בערך, ניתוח קבצים שלמים נהיה כואב. זרם במקום זאת - jq זרמים, פנדות קוראות בנתחים, ופורמט JSON Lines (אובייקט אחד בכל שורה) מקל על שניהם. עבור קבצים של עד כמה עשרות MB, כלי הדפדפן בסדר מכיוון ש- ' אין העלאה.

קידוד. שמות וכתובות נושאים תווים שאינם ASCII.שמור הכל UTF-8 מקצה לקצה, וחשוד ב - Excel ב - Windows, אשר באופן היסטורי רצה BOM כדי לזהות UTF-8 בצורה נכונה.

ותרגול אחד שהוא 't אופציונלי: אמת לפני שאתה ממיר. קובץ JSON קטוע נכשל באופן מבלבל באמצע ההמרה, אבל ברור ב- פורמט JSON. שלושים שניות של אימות דופקות עשר דקות של "למה ה-CSV שלי ריק."


שאלות נפוצות

כיצד אוכל להמיר JSON ל-CSV באינטרנט בחינם?

הדבק את ה-JSON שלך לתוך JSON ל CSV ממיר על Toolz.dev- הוא יוצר באופן מיידי CSV עם אובייקטים מקוננים שטוחים ומטופלים בבריחה, ואז מאפשר לך להעתיק או להוריד את התוצאה. אין הרשמה, והעיבוד הוא 100% בצד הלקוח, כך שהנתונים שלך לעולם לא עוזבים את הדפדפן שלך.

האם אוכל להמיר JSON מקונן ל-CSV?

כן. אובייקטים מקוננים משתטחים לכותרות סימון נקודות (address.city), ומערכים מחוברים למחרוזת מתוחמת או מפוצלים לעמודות באינדקס. ה Toolz.dev ממיר מחיל סימון נקודות באופן אוטומטי; ב-Python, pd.json_normalize() עושה את אותו הדבר.

כיצד אוכל להמיר קובץ JSON ל-CSV ב-Python?

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 (אובייקט אחד בכל שורה) הופכת תחילה את הסטרימינג להרבה יותר פשוט. כלי הדפדפן נוחים עד כמה עשרות MB; מעבר ל~100 MB, השתמש בשורת הפקודה.

כיצד אוכל להמיר CSV בחזרה ל-JSON?

ה ממיר CSV ל-JSON הופך את הנסיעה - כל שורה הופכת לאובייקט שמפתח שורת הכותרת. באופן פרוגרמטי: pd.read_csv("data.csv").to_json(orient="records").

למה ל-CSV שלי יש ציטוטים סביב כמה ערכים?

That's התנהגות נכונה, לא באג. RFC 4180 דורש מרכאות כפולות סביב כל ערך המכיל פסיקים, שורות חדשות או תווי ציטוט, עם מרכאות מוטבעות כפולות. גיליונות אלקטרוניים ומנתחים מפשיטים אותם בקריאה.

האם המרת JSON ל-CSV אינה מפסידה?

עבור JSON שטוח, כן. עבור JSON מקונן, הערכים שורדים אבל ההיררכיה עושה 't - כותרות סימון נקודות הן פחוסות ייצוג, ואתה יכול' לא תמיד לשחזר מהם את הקינון המקורי המדויק. שמור את המקור JSON; התייחס ל-CSV כאל תצוגה נגזרת.

מדוע העמודות שלי לא מיושרות לאחר ההמרה?

כמעט תמיד כשל בורח: ערך המכיל פסיק היה 't מצוטט, אז מנתחים רואים עמודות נוספות מנקודה זו ואילך. It's הבאג המדויק מכפתור הייצוא שלי של Laravel. השתמש בממיר שמיישם RFC 4180 במקום ערכים שמצטרפים למחרוזת - ואם כתבת משלך, בדוק אותו עם ערך כמו Smith, Jones & Partners.

כיצד אוכל להמיר JSON ל-CSV ב-Excel או ב-Google Sheets?

שתי האפליקציות מייבאות JSON דרך עוזר ולא הדבקה ב - Excel, השתמש בנתונים → קבל נתונים → מקובץ → מ - JSON, ולאחר מכן שטח את השאילתה ב - Power Query ו - Close & טען. ב - Google Sheets, הדבק מערכים קטנים באמצעות סקריפט Apps זמני או המר עם ה ממיר JSON ל-CSV ראשית ולפתוח את הקובץ המתקבל - בדרך כלל הנתיב המהיר יותר עבור חד פעמי.

באיזו שיטת JSON ל-CSV עלי להשתמש?

עבור חד פעמי מהיר, ממיר בצד הלקוח הוא המהיר ביותר ושומר על פרטיות הנתונים. עבור צינורות שניתן לחזור עליהם, השתמש ב-Python עם פנדות; עבור קבצים ענקיים, זרם עם jq בשורת הפקודה; ולהגיע לייבוא גיליון אלקטרוני רק כאשר לא מפתחים הם הבעלים של זרימת העבודה. התאם את הכלי לתדירות שבה אתה ' תחזור על העבודה, לא לקובץ 's גודל לבד.


התאם את השיטה לתפקיד

JSON-to-CSV נראה כמו one-liner פתור עד שפסיק בשם חברה מעביר 340 שורות של נתוני לקוחות עמודה אחת ימינה השיטה חשובה פחות מכיבוד הפורמט: בריחה לכל RFC 4180, איחוד המפתחות שלך, להחליט אסטרטגיית השטחה שלך בכוונה, ולשמור על JSON המקורי.

להמרה החד פעמית הבאה, ה ממיר JSON ל-CSV הוא הנתיב בן חמש עשרה השניות. אמת תחילה עם ה פורמט 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!