JSON وYAML وCSV: متى تستخدم أيًا منها وكيفية التحويل بينها
تحمّل مجموعة بيانات وتكون بصيغة CSV. واجهة API الخاصة بك تُرجع JSON. ملف الإعداد بصيغة YAML. زميل يرسل لك ملف JSON ويطلبه كجدول بيانات. زميل آخر يعطيك إعدادات YAML وتحتاجها بصيغة JSON لأداة مختلفة.
تحويل صيغ البيانات من تلك المهام التي تبدو بسيطة حتى تبدأ بتنفيذها فعلاً. فهم متى تستخدم أي صيغة وكيف تنتقل بينها يوفر وقتًا حقيقيًا.
الصيغ الثلاث بنظرة سريعة
JSON (ترميز كائنات جافاسكريبت)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
ما هي: صيغة نصية للبيانات المهيكلة تدعم الكائنات (أزواج مفتاح-قيمة) والمصفوفات (قوائم مرتبة) والنصوص والأرقام والقيم المنطقية والقيمة الفارغة.
نقاط القوة: قابلة للقراءة الآلية، مدعومة على نطاق واسع في كل لغة برمجة، تتعامل مع البيانات المتداخلة بشكل طبيعي، وبناؤها الصارم يمنع الغموض.
نقاط الضعف: مطوّلة (كثير من الأقواس والعلامات)، أقل سهولة في القراءة البشرية من YAML، لا تدعم التعليقات.
YAML (YAML ليست لغة ترميز)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
ما هي: صيغة تسلسل بيانات سهلة القراءة تستخدم المسافات البادئة بدلاً من الأقواس.
نقاط القوة: سهلة القراءة للغاية، تدعم التعليقات، تشويش بصري أقل، ممتازة لملفات الإعداد.
نقاط الضعف: حساسة للمسافات البادئة (سهلة الكسر بمسافات خاطئة)، بعض سلوكيات التحليل المفاجئة، أبطأ في التحليل من JSON.
CSV (قيم مفصولة بفواصل)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
ما هي: صيغة نصية مسطحة حيث كل سطر هو صف والقيم داخل الصف مفصولة بفواصل.
نقاط القوة: عالمية (كل جدول بيانات وقاعدة بيانات وأداة بيانات تدعمها)، مضغوطة للبيانات الجدولية، سهلة القراءة والإنشاء.
نقاط الضعف: لا تدعم البيانات المتداخلة، لا أنواع بيانات (كل شيء نص)، لا معيار للأحرف الخاصة، مقتصرة على الجداول المسطحة.
هل تعلم؟ YAML هي تقنيًا مجموعة شاملة من JSON. هذا يعني أن أي مستند JSON صالح هو تلقائيًا مستند YAML صالح. يمكنك لصق JSON في محلل YAML وسيعمل. العكس غير صحيح — ميزات YAML (التعليقات والمراسي والنصوص متعددة الأسطر) ليس لها مقابل في JSON.
متى تستخدم أي صيغة
| حالة الاستخدام | الصيغة الأفضل | السبب |
|---|---|---|
| طلبات واستجابات API | JSON | المعيار الصناعي، كل لغة لها دعم أصلي |
| ملفات الإعداد | YAML | سهلة القراءة البشرية، تدعم التعليقات للتوثيق |
| بيانات جداول البيانات | CSV | تُفتح مباشرة في Excel وGoogle Sheets وغيرها |
| صادرات قواعد البيانات | CSV | البيانات الجدولية المسطحة تُربط مباشرة بالصفوف والأعمدة |
| البيانات المتداخلة المعقدة | JSON أو YAML | CSV لا تستطيع تمثيل التداخل |
| تبادل البيانات بين الأنظمة | JSON | تحليل لا لبس فيه، مواصفات صارمة |
| إعدادات يحررها الإنسان | YAML | أسهل في القراءة والتحرير يدويًا |
| قوائم بيانات بسيطة | CSV | خفيفة الوزن، بدون نفقات إضافية |
التحويل بين الصيغ
من JSON إلى YAML
هذا هو التحويل الأكثر شيوعًا للإعدادات. لديك إعداد JSON من أداة وتحتاج YAML لأداة أخرى. التحويل بسيط لأن YAML تدعم كل ما يدعمه JSON.
{"server": {"host": "0.0.0.0", "port": 8080}}
يصبح:
server:
host: 0.0.0.0
port: 8080
من YAML إلى JSON
الانتقال من YAML إلى JSON بسيط أيضًا، لكنك تفقد التعليقات (JSON لا تدعمها) والنتيجة أكثر إطالة.
من JSON إلى CSV
يعمل هذا جيدًا لمصفوفات JSON المسطحة (مصفوفات كائنات بنفس المفاتيح). كل كائن يصبح صفًا، وكل مفتاح يصبح رأس عمود.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
يصبح:
name,age
Alice,30
Bob,25
تحذير تحويل JSON إلى CSV يتعطل عندما يحتوي JSON على كائنات أو مصفوفات متداخلة. CSV مسطحة — ليس لديها طريقة لتمثيل مصفوفة "skills" أو كائن "address" متداخل. يجب تسطيح البيانات المتداخلة (address.city وaddress.country كأعمدة منفصلة) أو تسلسلها كنص داخل خلية CSV.
من CSV إلى JSON
كل صف يصبح كائنًا، مع رؤوس الأعمدة كمفاتيح. هذا نظيف للبيانات الجدولية البسيطة.
من CSV إلى YAML
أقل شيوعًا، لكن يتبع نفس المنطق: كل صف يصبح تعيين YAML، والملف بأكمله يصبح تسلسل YAML.
المشاكل الشائعة
مشاكل ترميز CSV
يمكن أن تستخدم ملفات CSV ترميزات أحرف مختلفة (UTF-8، Latin-1، Windows-1252). إذا فتحت CSV ورأيت أحرفًا مشوهة مثل "München" بدلاً من "München"، فهناك عدم تطابق في الترميز. استخدم دائمًا UTF-8 عندما يكون ذلك ممكنًا.
الخلط في فاصل CSV
ليست كل ملفات CSV تستخدم فواصل. ملفات CSV الأوروبية غالبًا تستخدم فواصل منقوطة لأن الفواصل تُستخدم كفواصل عشرية في كثير من صيغ الأرقام الأوروبية. القيم المفصولة بعلامات تبويب (TSV) هي متغير شائع آخر.
أخطاء المسافات البادئة في YAML
تستخدم YAML المسافات البادئة (مسافات، وليس أبدًا علامات تبويب) لتحديد الهيكل. مسافة بادئة غير متسقة أو خلط علامات التبويب والمسافات ينتج أخطاء تحليل أو تفسير خاطئ صامت. استخدم مسافتين بالضبط لكل مستوى مسافة بادئة.
تحذير في YAML، النص no يُحلَّل كقيمة منطقية false، وyes يُحلَّل كـtrue. النص 1.0 يُحلَّل كرقم. إذا كنت تقصد النصوص الحرفية "no" أو "yes" أو "1.0"، يجب وضعها بين علامات اقتباس: "no"، "yes"، "1.0". هذه واحدة من أشهر مفاجآت YAML.
الفواصل الزائدة في JSON
لا تسمح JSON بالفواصل الزائدة. هذا صالح في JavaScript لكنه غير صالح في JSON:
{"name": "Alice", "age": 30,} // JSON غير صالح: فاصلة زائدة
أداء الملفات الكبيرة
لمجموعات البيانات الكبيرة جدًا (ملايين الصفوف)، CSV أكثر كفاءة من JSON أو YAML لأن النفقات الإضافية لكل سجل قليلة. JSON تضيف أقواسًا وعلامات اقتباس لكل قيمة، مما يزيد حجم الملف بشكل كبير للبيانات الجدولية الكبيرة.
أدوات عملية للتحويل
للتحويلات السريعة لمرة واحدة، الأدوات المستندة إلى المتصفح هي الخيار الأسرع. تلصق أو ترفع بياناتك، وتختار الصيغة المستهدفة، وتحصل على النتيجة فورًا.
نصيحة حوّل بين صيغ JSON وYAML وCSV فورًا: كيفية تحويل صيغ البيانات. الصق بياناتك، واختر الصيغة المستهدفة، وانسخ أو حمّل النتيجة.
للعمل مع JSON تحديدًا، أداة تنسيق تتحقق من صحة JSON وتنسقها لا غنى عنها:
- منسق JSON — للتحقق من صحة JSON وتنسيقه وتصغيره
- محول JSON إلى CSV — لتحويل مصفوفات JSON إلى CSV
- محول YAML-JSON — للتحويل بين YAML وJSON
- عارض CSV — لعرض واستكشاف ملفات CSV
حوّل بياناتك الآن:
جميع الأدوات مجانية وتعمل مباشرة في متصفحك.