استمر أول محول JSON-to-CSV كتبته على الإطلاق لمدة ثلاثة أيام في الإنتاج.
لقد كان "؛ التصدير إلى جدول البيانات وحصة الاقتباس؛ الزر الموجود في لوحة إدارة Laravel، وكان منطق التحويل الخاص بي هو - I'؛ لست فخورًا بهذا - values.join(","). أبحرت من خلال الاختبار. ثم قام المستخدم بتصدير قائمة العملاء حيث تم تسمية شركة واحدة "؛ سميث، جونز آند أمبير؛ الشركاء، والاقتباس؛ وكل عمود بعد أن تحول موضعًا واحدًا إلى اليمين. استورد محاسبهم 340 صفًا من البيانات غير المحاذاة قبل أن يلاحظ أي شخص أن أرقام الهواتف موجودة في عمود البريد الإلكتروني.
الفاصلة في CSV هي '؛ وهو فاصل يمكنك الانضمام إليه في طريقك. It'؛s قواعد نحوية، محددة في RFC 4180، مع قواعد الهروب الفعلية. هذا الخطأ هو السبب محول JSON إلى CSV لقد قمت لاحقًا بتصميم Toolz.dev يتعامل مع الهروب على أنه غير قابل للتفاوض - ولماذا يقضي هذا الدليل وقتًا حقيقيًا في الحالات المتطورة، وليس فقط المسار السعيد.
فيما يلي الطرق الخمس التي أستخدمها فعليًا، عندما يفوز كل واحد منهم، وحيث يعض كل واحد منهم.
ليرة تركية؛DR: للتحويلات لمرة واحدة، قم بلصق JSON الخاص بك في Toolz.dev JSON إلى محول CSV- يقوم بتسوية الكائنات المتداخلة بتدوين نقطي، ويهرب بشكل صحيح وفقًا لـ RFC 4180، ويعمل بنسبة 100% في متصفحك. للمهام المتكررة، قم ببرمجته:
pd.json_normalize()في بايثون أوjson2csvالحزمة في العقدة. التحقق من صحة مع تنسيق JSON أولاً، وحافظ على تسطيح JSON - CSV الأصلي في اتجاه واحد.
لماذا تحتاج إلى CSV عندما يكون لديك JSON بالفعل؟
لأن الأشخاص الذين يحتاجون إلى بياناتك لا '؛ ويعيشون في جهازك الطرفي. كل طلب تحويل I'؛ لقد تم تقليلها إلى واحدة من خمس مواقف:
يعمل المحللون في جداول البيانات. Excel، وGoogle Sheets، وTableau، وPower BI - جميعها تستنشق CSV محليًا وتختنق عند JSON المتداخل. تحويل مخرجات واجهة برمجة التطبيقات إلى CSV هو الطريقة التي تصل بها البيانات الهندسية إلى جانب الأعمال.
قواعد البيانات استيراد الملفات المسطحة بكميات كبيرة. PostgreSQL'؛s COPY و MySQL'؛s LOAD DATA تريد إدخال جدولي. توجد أعمدة JSON، ولكن التحميل في جداول علائقية حقيقية يعني التسطيح أولاً.
تحتاج الهجرات إلى لغة مشتركة. نقل البيانات بين متجر NoSQL ومتجر علائقي، أو بين منصتي SaaS، CSV هو التنسيق الذي يمكن فهمه بشكل موثوق.
الامتثال يحب الملفات المسطحة. تحدد بعض متطلبات الأرشيف التنسيقات التي يمكن للإنسان قراءتها. يتم فتح ملف CSV في أي شيء، بعد عقود من الآن.
يمكن لأصحاب المصلحة '؛ وقراءة JSON. مدير المنتج يسأل "؛ هل يمكنني الحصول على ذلك كجدول بيانات؟"؛ هو المشغل الوحيد الأكثر شيوعًا. لقد كان المشغل لزر التصدير المكسور الخاص بي.

ما الذي يجعل تحويل 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 مفهوم "؛ في الداخل."؛ لذلك تختار استراتيجية التسطيح، ولكل منها تكلفة
تسطيح التدوين النقطي- تصبح المفاتيح المتداخلة رؤوسًا مركبة:
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 هو الملاذ الأخير للتنقل ذهابًا وإيابًا.
الطريقة الأولى: كيف يمكنك تحويل JSON إلى CSV عبر الإنترنت؟
الأفضل ل: تحويلات لمرة واحدة، غير المطورين، أي شيء أقل من بضع عشرات من ميغابايت.
- افتح ال محول JSON إلى CSV.
- الصق JSON الخاص بك - مجموعة من الكائنات، أو كائن واحد.
- تكتشف الأداة البنية، وتقوم بتسوية الكائنات المتداخلة إلى تدوين نقطي، وتعرض ملف CSV على الفور.
- انسخه، أو قم بتنزيله
.csv.
السبب وراء تعييني لهذا على البرنامج النصي لأي شيء غير متكرر: الإعداد الصفري، وتصحيح هروب RFC 4180 (تعلمت هذا الدرس)، واتحاد المفاتيح التلقائي عبر الكائنات غير المتسقة، و- لأنه '؛ من جانب العميل - استجابة واجهة برمجة التطبيقات مليئة برسائل البريد الإلكتروني للعملاء التي قمت بلصقها للتو لا تترك جهازك أبدًا. شاهد علامة تبويب الشبكة إذا كنت تفعل '؛ صدقني؛ هذا '؛ هو الاختبار الذي أطبقه على كل محول عبر الإنترنت، ومعظمهم يفشلون فيه.
حيث '؛s الأداة الخاطئة: التحويلات المتكررة (قم بكتابتها) والتداخل المرضي العميق حيث تريد أنت و#39؛ اختيار استراتيجية التسطيح يدويًا.

الطريقة الثانية: كيف يمكنك تحويل JSON إلى CSV في JavaScript؟
الأفضل ل: بناء خطوط الأنابيب، وخدمات العقدة، ومنطق التحويل المخصص.
هنا #39؛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);
الطريقة الثالثة: كيف يمكنك تحويل JSON إلى CSV في بايثون؟
الأفضل ل: سير عمل علم البيانات، أي شيء يمس الباندا بالفعل.
يغطي خط الباندا ذو البطانة الواحدة شقة JSON:
import pandas as pd
df = pd.read_json("data.json")
df.to_csv("output.csv", index=False)
الوظيفة المفيدة حقا هي pd.json_normalize()- مصمم خصيصًا لاستجابات واجهة برمجة التطبيقات المتداخلة:
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)
الطريقة الرابعة: كيف يمكنك تحويل JSON إلى CSV من سطر الأوامر؟
الأفضل ل: نصوص Shell وخطوط أنابيب CI والخوادم التي يكون فيها تثبيت الباندا مبالغًا فيه.
jq هل هو أصلا مع @csv، الذي يهرب بشكل صحيح:
cat data.json | jq -r '
(.[0] | keys_unsorted) as $keys |
($keys | @csv),
(.[] | [.[$keys[]]] | @csv)
'
csvkit'؛س 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.
الطريقة الخامسة: هل يمكنك استيراد JSON مباشرة إلى جداول بيانات Excel أو Google؟
الأفضل ل: غير المطورين، والبيانات الحية المنعشة، والواردات لمرة واحدة.
ممتاز: البيانات → احصل على البيانات → من الويب، والصق عنوان URL لواجهة برمجة التطبيقات، ويمنحك Power Query محررًا مرئيًا لتوسيع السجلات المتداخلة قبل التحميل. جيد حقًا للتحديثات المتكررة لنفس المصدر.
أوراق جوجل: الامتدادات → البرنامج النصي للتطبيقات، ثم وظيفة جلب صغيرة:
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 |
ممتاز | نعم |
| بايثون / الباندا | تثبيت النقطة | json_normalize |
ممتاز | نعم |
| جي كيو/csvkit/mlr | مدير الحزمة | المسارات اليدوية | ممتاز (كرون/سي) | نعم |
| اكسل / أوراق | الحساب/التطبيق | واجهة مستخدم استعلام الطاقة | جيد (تحديث تلقائي) | اكسل: نعم؛ الأوراق: خوادم جوجل |
قاعدتي: الوصول إلى أداة المتصفح حتى المرة الثالثة I'؛m تحويل نفس شكل البيانات - ثم يصبح برنامجًا نصيًا.
ما هي الحالات الطرفية التي تكسر تحويل JSON إلى CSV؟
تمثل أربعة مصائد تقريبًا كل عملية تصدير مكسورة I'؛ لقد تم تصحيح أخطائها:
مفاتيح غير متسقة. الكائن 1 لديه email، الكائن 2 لديه phone، الكائن 3 لديه كليهما. خذ الرؤوس من الكائن الأول فقط وستقوم بإسقاط البيانات بصمت. الإصلاح عبارة عن اتحاد مفاتيح عبر جميع الكائنات، مع قيم مفقودة كخلايا فارغة - وهو ما تفعله الأدوات الجيدة تلقائيًا.
شخصيات خاصة لم يهرب منها. "؛سميث، جونز & أمبير؛ الشركاء والاقتباس؛ مشكلة. وفقًا لـ RFC 4180: قم بتغليف القيم التي تحتوي على فواصل أو علامات اقتباس أو أسطر جديدة بعلامات اقتباس مزدوجة، ومضاعفة أي علامات اقتباس مضمنة ("He said ""hello""").
ملفات كبيرة. بعد 100 ميجابايت أو نحو ذلك، يصبح تحليل الملف بالكامل مؤلمًا. دفق بدلا من ذلك - jq التدفقات، وقراءة الباندا في أجزاء، وتنسيق JSON Lines (كائن واحد لكل سطر) يجعل الأمر أسهل. بالنسبة للملفات التي يصل حجمها إلى بضع عشرات من ميغابايت، فإن أداة المتصفح جيدة نظرًا لعدم وجود تحميل.'؛s.
الترميز. تحمل الأسماء والعناوين أحرفًا غير ASCII. احتفظ بكل شيء من UTF-8 من طرف إلى طرف، وكن متشككًا في Excel على نظام التشغيل Windows، الذي أراد تاريخيًا أن يكتشف BOM UTF-8 بشكل صحيح.
وممارسة واحدة هي '؛t اختيارية: التحقق من الصحة قبل التحويل. يفشل ملف JSON المقطوع بشكل مربك في منتصف التحويل ولكن من الواضح أنه موجود في تنسيق JSON. ثلاثون ثانية من التحقق من الصحة تتفوق على عشر دقائق من "؛ لماذا ملف CSV الخاص بي فارغ."؛
الأسئلة الشائعة
كيف يمكنني تحويل JSON إلى CSV عبر الإنترنت مجانًا؟
لصق JSON الخاص بك في JSON إلى CSV Converter على Toolz.dev- يقوم على الفور بإنشاء ملف CSV مع تسوية الكائنات المتداخلة ومعالجة الهروب، ثم يتيح لك نسخ النتيجة أو تنزيلها. لا يوجد تسجيل، وتتم المعالجة من جانب العميل بنسبة 100%، لذلك لا تترك بياناتك متصفحك أبدًا.
هل يمكنني تحويل JSON المتداخل إلى CSV؟
نعم. تتسطح الكائنات المتداخلة إلى رؤوس تدوين نقطية (address.city)، ويتم ربط المصفوفات إما في سلسلة محددة أو تقسيمها إلى أعمدة مفهرسة. ال محول Toolz.dev يطبق التدوين النقطي تلقائيًا؛ في بايثون، 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) أولاً - وتذكر الانضمام إلى أي أعمدة مصفوفة بنفسك، حيث أن تطبيع قوائم الأوراق سليمة.
ما هي أفضل طريقة لتحويل ملفات JSON الكبيرة جدًا '؛s؟
الدفق بدلا من التحميل: jq في سطر الأوامر، أو الباندا ذات القراءات المقطوعة. تحويل الملف إلى خطوط JSON (كائن واحد لكل سطر) يجعل البث أسهل بكثير أولاً. أدوات المتصفح مريحة حتى بضع عشرات من ميغابايت؛ ما بعد ~ 100 ميجابايت، استخدم سطر الأوامر.
كيف يمكنني تحويل CSV مرة أخرى إلى JSON؟
ال محول CSV إلى JSON يعكس الرحلة - يصبح كل صف كائنًا مرتبطًا بصف الرأس. برمجيا: pd.read_csv("data.csv").to_json(orient="records").
لماذا يحتوي ملف CSV الخاص بي على علامات اقتباس حول بعض القيم؟
السلوك الصحيح لـ THAT'؛ وليس خطأ. يتطلب RFC 4180 علامات اقتباس مزدوجة حول أي قيمة تحتوي على فواصل أو أسطر جديدة أو أحرف اقتباس، مع مضاعفة علامات الاقتباس المضمنة. تقوم جداول البيانات والمحللون بتجريدها عند القراءة.
هل تحويل JSON إلى CSV بدون فقدان؟
بالنسبة لـ JSON المسطح، نعم. بالنسبة لـ JSON المتداخلة، تبقى القيم قائمة ولكن التسلسل الهرمي لا يبقى '؛t - رؤوس التدوين النقطي مسطحة التمثيلويمكنك '؛ دائمًا إعادة بناء التداخل الأصلي الدقيق منهم. احتفظ بالمصدر JSON؛ تعامل مع CSV كعرض مشتق.
لماذا يتم محاذاة أعمالي بشكل غير صحيح بعد التحويل؟
دائمًا ما يكون هناك فشل في الهروب: قيمة تحتوي على فاصلة كانت '؛t مقتبسة، لذلك يرى المحللون أعمدة إضافية من تلك النقطة فصاعدًا. It'؛s الخطأ الدقيق من زر التصدير Laravel الخاص بي. استخدم محولًا ينفذ RFC 4180 بدلاً من قيم ربط السلسلة - وإذا كتبت قيمك الخاصة، فاختبرها بقيمة مثل Smith, Jones & Partners.
كيف يمكنني تحويل JSON إلى CSV في جداول بيانات Excel أو Google؟
يقوم كلا التطبيقين باستيراد JSON من خلال مساعد بدلاً من اللصق. في Excel، استخدم البيانات → احصل على البيانات → من الملف → من JSON، ثم قم بتسوية الاستعلام في Power Query وClose &؛ تحميل. في جداول بيانات Google، قم بلصق صفائف صغيرة من خلال برنامج نصي مؤقت للتطبيقات أو قم بالتحويل باستخدام محول JSON إلى CSV أولاً وافتح الملف الناتج - عادةً ما يكون المسار الأسرع لمرة واحدة.
ما هي طريقة JSON إلى CSV التي يجب أن أستخدمها؟
للحصول على تحويل سريع لمرة واحدة، يكون المحول من جانب العميل هو الأسرع ويحافظ على خصوصية البيانات. بالنسبة لخطوط الأنابيب القابلة للتكرار، استخدم بايثون مع الباندا؛ للملفات الضخمة، دفق مع jq في سطر الأوامر؛ والوصول إلى استيراد جداول البيانات فقط عندما يمتلك غير المطورين سير العمل. قم بمطابقة الأداة مع عدد المرات التي تقوم فيها '؛ سأكرر المهمة، وليس بحجم الملف '؛s وحده.
مطابقة الطريقة مع الوظيفة
يبدو JSON-to-CSV وكأنه سطر واحد تم حله حتى تقوم فاصلة في اسم الشركة بنقل 340 صفًا من بيانات العميل عمودًا واحدًا إلى اليمين. الطريقة أقل أهمية من احترام التنسيق: اهرب وفقًا لـ RFC 4180، وقم بدمج مفاتيحك، وحدد استراتيجية التسطيح الخاصة بك عن قصد، واحتفظ بـ JSON الأصلي.
للتحويل التالي لمرة واحدة، محول JSON إلى CSV هو المسار الخامس عشر ثانية. التحقق أولا مع تنسيق JSON، وعندما تحتاج البيانات إلى العودة، فإن محول CSV إلى JSON يغلق الحلقة - الثلاثة في متصفحك، ولا يرى أي منهم جانب خادم البيانات الخاص بك على الإطلاق.
مقالات ذات صلة:
- الدليل النهائي لأدوات JSON (2026)
- كيفية تنسيق JSON عبر الإنترنت: دليل كامل مع أمثلة
- دليل مجاني لأدوات النص عبر الإنترنت



