محوّل JSON إلى CSV

تحويل مصفوفة JSON إلى تنسيق CSV

يعمل محليًا · آمن للصق الأسرار
سيظهر CSV هنا…

ما هو تحويل JSON إلى CSV؟

يُحوِّل محوِّل JSON إلى CSV البيانات المنظّمة من تنسيق JSON إلى قيم مفصولة بفواصل، وهو تنسيق جدولي تستوعبه جداول البيانات وقواعد البيانات وأدوات التحليل بصورة مباشرة. يخزّن JSON البيانات في شكل كائنات متداخلة ومصفوفات دون مخطط بيانات ثابت، في حين يخزّن CSV البيانات في شكل صفوف وأعمدة مع سطر ترويسة يُحدّد أسماء الحقول. التحويل هو الجسر الذي يوصل بيانات API إلى جداول البيانات وقواعد البيانات.

CSV (القيم المفصولة بفواصل) معرَّف بموجب RFC 4180. كل سطر يمثّل سجلًا واحدًا، وتُفصل الحقول داخل السطر بمحرف فاصل، وأكثره شيوعًا الفاصلة. يجب تضمين الحقول التي تحتوي على الفاصل أو علامات الاقتباس المزدوجة أو فواصل الأسطر بين علامتَي اقتباس مزدوجتَين، مع تخطي علامات الاقتباس الداخلية بمضاعفتها. هذا التخطي هو المصدر الرئيسي للأخطاء عند كتابة محوّل JSON إلى CSV يدويًا.

يكون التحويل مباشرًا عندما يكون المدخل مصفوفة مسطّحة من الكائنات ذات المفاتيح المتسقة. يصبح كل كائن صفًّا واحدًا، ويصبح كل مفتاح فريد عنوانًا للعمود. تتطلب الكائنات والمصفوفات المتداخلة خطوة تسوية، فيما تتطلب المفاتيح غير المتسقة عبر الكائنات استراتيجية للتعامل مع الحقول المفقودة — وعادةً ترك الخلية فارغة. يُعالج محوّل موثوق جميع هذه الحالات الاستثنائية تلقائيًا.

لماذا تُحوِّل JSON إلى CSV؟

تُعيد واجهات API بيانات بتنسيق JSON، غير أن جداول البيانات وقواعد بيانات SQL وأدوات ذكاء الأعمال تتوقع بيانات جدولية. يُتيح لك تحويل JSON إلى CSV نقل البيانات بين هذه الأنظمة دون كتابة سكريبتات استيراد مخصصة.

تحويل فوري في المتصفح
الصق JSON وحمّل الملف فورًا. بدون رفع إلى خادم، ولا قيود مفروضة من واجهات API خارجية، ولا انتظار لطوابير المعالجة.
🔒
المعالجة تبقى خاصة
تبقى بياناتك في متصفحك. يعمل التحويل بالكامل في JavaScript على جهازك. بيانات تصدير قواعد البيانات وسجلات المستخدمين والبيانات المالية لا تغادر جهازك أبدًا.
🔀
دعم فواصل متعددة
اختر بين الفاصلة والفاصلة المنقوطة والجدولة والشريط الرأسي كفواصل. استخدم الفاصلة المنقوطة لجداول بيانات المناطق الأوروبية، والجدولة لملفات TSV، أو الشريط الرأسي لاستيراد الأنظمة القديمة.
📋
لا تسجيل مطلوب
افتح الصفحة وابدأ التحويل. بدون تسجيل، ولا مفتاح API، ولا تثبيت CLI. تعمل على أي جهاز يملك متصفحًا حديثًا.

حالات استخدام تحويل JSON إلى CSV

تصدير بيانات API إلى جداول البيانات
تُعيد واجهات REST APIs بيانات بتنسيق JSON. يحتاج مديرو المنتجات والمحللون إلى هذه البيانات في Excel أو Google Sheets. حوّل استجابة API إلى CSV وافتحه مباشرةً في أي تطبيق جداول بيانات.
الاستيراد الجماعي لقواعد البيانات
يقبل كل من PostgreSQL COPY وMySQL LOAD DATA وSQLite .import تنسيق CSV. حوّل مجموعة بياناتك إلى تنسيق جدولي للتحميل الجماعي السريع دون كتابة سكريبت استيراد مخصص.
اختبار أنابيب ETL
كثيرًا ما تنتج أنابيب ETL مخرجات وسيطة يصعب فحصها بصيغة JSON خام. حوّل مخرجات خطوة ما إلى CSV وافتحها في جدول بيانات للتحقق من التحويلات قبل توصيل الأنبوب بالكامل.
إعداد بيانات اختبار ضمان الجودة
يُنشئ مهندسو ضمان الجودة مجموعات بيانات اختبار بتنسيق JSON، لكن كثيرًا من أطر الاختبار وأدوات الاختبار المعتمدة على البيانات تقبل CSV لمدخلات الاختبارات. حوّل مجموعات البيانات إلى CSV دون إعادة تنسيق يدوية.
تحليل السجلات وإعداد التقارير
يمكن تحويل سجلات JSON المنظّمة من التطبيقات والخدمات السحابية إلى CSV للاستيراد في أدوات ذكاء الأعمال مثل Tableau وPower BI وLooker للتصور البياني وإعداد التقارير.
معالجة البيانات الأكاديمية
يتلقى الطلاب والباحثون العاملون مع واجهات البيانات المفتوحة استجابات بتنسيق JSON. يُتيح تحويلها إلى CSV التحليل في R وpandas وSPSS وExcel دون كتابة كود لتحليل البيانات.

مرجع فواصل CSV

يُفصل محرف الفاصل الحقولَ داخل كل صف. الفاصلة هي الأكثر شيوعًا، لكن فواصل أخرى معيارية في سياقات محددة. اختيار الفاصل الخاطئ يُسبّب دمج الحقول أو تقسيمها بشكل خاطئ عند فتح الملف.

الفاصلالمحرفالامتدادمتى تستخدمه
Comma,.csvDefault for most spreadsheets and databases
Semicolon;.csvStandard in locales where comma is a decimal separator (DE, FR, BR)
Tab\t.tsvAvoids escaping when field values contain commas or semicolons
Pipe|.csvUsed in fixed-width legacy systems and some ETL pipelines

التعامل مع JSON المتداخل في CSV

CSV هو تنسيق مسطّح لا يمتلك آلية مدمجة لتمثيل الكائنات أو المصفوفات المتداخلة. عندما يحتوي JSON على بنى متداخلة، يجب على المحوّل تسويتها إلى أعمدة. ثمة عدة استراتيجيات، والاختيار الصحيح يعتمد على كيفية استهلاك CSV.

التسوية بترميز النقطة
تُدمج المفاتيح المتداخلة بنقاط: {"address": {"city": "الرياض"}} يصبح عمودًا باسم address.city بقيمة الرياض. هذا النهج الأكثر شيوعًا ويعمل بشكل جيد مع الأدوات التي تدعم مراجع الحقول المتداخلة.
أعمدة فهارس المصفوفات
تُوسَّع المصفوفات إلى أعمدة مرقّمة: {"tags": ["a", "b"]} يصبح tags.0 = a وtags.1 = b. يحافظ هذا على جميع القيم لكنه يُنشئ أعمدة كثيرة عندما تكون المصفوفات كبيرة.
تحويل القيم المتداخلة إلى نص JSON
تُسلسَل القيم المتداخلة المعقدة كنصوص JSON داخل خلية CSV: تحتوي الخلية على نص JSON الخام. يحافظ هذا على البنية الكاملة لكنه يتطلب من المستهلك تحليل قيمة الخلية.
تجاهل الحقول المتداخلة
تتجاهل بعض المحوّلات الكائنات والمصفوفات المتداخلة كليًّا، مع الاحتفاظ بالحقول القياسية فقط (نص، رقم، قيمة منطقية، null). يُنتج هذا CSV نظيفًا لكنه يُفقد البيانات. مفيد فقط عندما تعلم أن الحقول المتداخلة غير مطلوبة.

أمثلة برمجية

يتطلب تحويل JSON إلى CSV برمجيًا التعامل مع استخراج الترويسات واقتباس الحقول والهروب من الفاصل. تمتلك معظم اللغات دعمًا مدمجًا أو ضمن المكتبة القياسية لكتابة CSV.

JavaScript (Node.js)
const data = [
  { name: "Alice", age: 30, city: "Berlin" },
  { name: "Bob", age: 25, city: "Tokyo" },
]

// Extract headers from the first object
const headers = Object.keys(data[0])
const csv = [
  headers.join(","),
  ...data.map(row => headers.map(h => {
    const val = String(row[h] ?? "")
    // Quote fields that contain commas, quotes, or newlines
    return val.includes(",") || val.includes('"') || val.includes("\n")
      ? '"' + val.replace(/"/g, '""') + '"'
      : val
  }).join(","))
].join("\n")

console.log(csv)
// → name,age,city
// → Alice,30,Berlin
// → Bob,25,Tokyo
Python
import json, csv, io

json_str = '[{"name":"Alice","age":30,"city":"Berlin"},{"name":"Bob","age":25,"city":"Tokyo"}]'
data = json.loads(json_str)

output = io.StringIO()
writer = csv.DictWriter(output, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)

print(output.getvalue())
# → name,age,city
# → Alice,30,Berlin
# → Bob,25,Tokyo
CLI (jq + Miller)
# Using jq to convert JSON array to CSV
echo '[{"name":"Alice","age":30},{"name":"Bob","age":25}]' | \
  jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]] ) | @csv'
# → "name","age"
# → "Alice",30
# → "Bob",25

# Using Miller (mlr) for streaming conversion
echo '[{"name":"Alice","age":30}]' | mlr --json --ocsv cat
# → name,age
# → Alice,30
Go
package main

import (
    "encoding/csv"
    "encoding/json"
    "fmt"
    "os"
)

func main() {
    jsonStr := `[{"name":"Alice","age":30},{"name":"Bob","age":25}]`
    var data []map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)

    w := csv.NewWriter(os.Stdout)
    // Write header
    headers := []string{"name", "age"}
    w.Write(headers)
    // Write rows
    for _, row := range data {
        record := make([]string, len(headers))
        for i, h := range headers {
            record[i] = fmt.Sprintf("%v", row[h])
        }
        w.Write(record)
    }
    w.Flush()
    // → name,age
    // → Alice,30
    // → Bob,25
}

الأسئلة الشائعة

ما بنية JSON التي يتوقعها هذا المحوّل؟
يتوقع المحوّل مصفوفة JSON من الكائنات، مثل [{"name":"محمد"},{"name":"فاطمة"}]. يصبح كل كائن في المصفوفة صفًّا واحدًا في المخرجات، وتصبح مفاتيح الكائنات عناوين الأعمدة. يُعامَل كائن JSON واحد (غير مغلّف في مصفوفة) كجدول من صف واحد.
كيف تُعالَج الكائنات والمصفوفات المتداخلة؟
تُسوَّى القيم المتداخلة باستخدام ترميز النقطة. مثلًا، {"address":{"city":"الرياض"}'} يُنتج عمودًا باسم address.city. تُوسَّع المصفوفات إلى أعمدة مفهرسة (tags.0، tags.1). يحافظ هذا على البيانات مع إبقاء المخرجات مسطّحة.
ماذا يحدث عندما تمتلك الكائنات مفاتيح مختلفة؟
يجمع المحوّل جميع المفاتيح الفريدة عبر كل الكائنات في المصفوفة ويستخدمها عناوينًا للأعمدة. الكائنات التي تفتقر إلى مفتاح ما تحصل على خلية فارغة لذلك العمود. لا تُفقد أي بيانات، ويتبع ترتيب الأعمدة ترتيب ظهور المفاتيح أول مرة.
هل يمكنني استخدام الفاصلة المنقوطة أو الجدولة بدلًا من الفاصلة؟
نعم. تدعم الأداة الفاصلة والفاصلة المنقوطة والجدولة والشريط الرأسي كفواصل. استخدم الفاصلة المنقوطة عندما تستخدم بياناتك أو منطقتك الفاصلة كفاصل عشري (شائع في جداول بيانات الألمانية والفرنسية والبرازيلية). استخدم الجدولة لملفات TSV التي تستهلكها أدوات Unix.
هل التحويل غير مُفقِد للبيانات؟
بالنسبة لمصفوفات JSON المسطّحة ذات القيم القياسية المتسقة، نعم. يحتوي ملف المخرجات على البيانات ذاتها ويمكن تحويله مجددًا إلى JSON مطابق. بالنسبة للبنى المتداخلة، تُغيّر التسوية شكل البيانات. يمكن إعادة بناء قيم المصفوفات المُسلسَلة في أعمدة مفهرسة أو نصوص JSON، لكن ذلك يتطلب معرفة البنية الأصلية.
ما أكبر حجم لملف JSON يمكنني تحويله؟
تعمل الأداة في متصفحك وتعالج البيانات في الذاكرة — تُحوَّل الملفات حتى 10-20 ميغابايت دون مشاكل على الأجهزة الحديثة. للملفات الأكبر من ذلك، استخدم أداة CLI مثل jq أو Miller أو سكريبت Python مع وحدة csv، التي تعالج البيانات كتدفق.
هل من الآمن لصق بيانات حساسة في هذه الأداة؟
نعم. تتم جميع عمليات المعالجة في متصفحك باستخدام JavaScript. لا تُرسَل أي بيانات إلى أي خادم. يمكنك التحقق من ذلك بفتح أدوات المطوّر في متصفحك والتحقق من علامة تبويب الشبكة أثناء التحويل.