سواء كنت تُعدّ تطبيق ويب أو تتبادل بيانات بين خدمات أو تحلل تصدير جدول بيانات أو تقرأ استجابة API، ستصادف بيانات مخزنة في تنسيقات نصية منظمة. الأربعة الأكثر شيوعاً هي JSON وYAML وCSV وXML.
كل تنسيق صُمم بأهداف مختلفة، واختيار الصحيح يعتمد على حالة استخدامك. تشرح هذه المقالة ما هو كل تنسيق وكيف يبدو ومتى تستخدمه وكيف يتقارنون.
JSON — ترميز كائنات JavaScript
أصبح JSON تنسيق تبادل البيانات المهيمن على الويب. رغم اسمه، فهو مستقل عن اللغة ويُستخدم في كل مكان.
مثال على الصياغة:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
الخصائص الرئيسية:
- أزواج مفتاح-قيمة بصياغة نظيفة وقابلة للقراءة
- يدعم السلاسل النصية والأرقام والقيم المنطقية والمصفوفات والكائنات وnull
- لا يسمح بالتعليقات في JSON القياسي
- صياغة صارمة — الفواصل الزائدة وعلامات الاقتباس المفردة تعد أخطاء
حالات الاستخدام الشائعة: واجهات REST API، ملفات الإعدادات (package.json، tsconfig.json)، قواعد بيانات NoSQL مثل MongoDB، تبادل البيانات بين الواجهة الأمامية والخلفية.
معلومة مفيدة. صياغة JSON الصارمة هي نقطة قوة ونقطة ضعف في آن واحد. فهي تجعل التحليل موثوقاً وغير ملتبس، لكنها تعني أيضاً أن فاصلة واحدة مفقودة أو فاصلة زائدة ستكسر الملف بالكامل.
YAML — لغة YAML ليست لغة ترميز
صُمم YAML ليكون أكثر تنسيقات تسلسل البيانات قابلية للقراءة البشرية. يستخدم المسافات البادئة بدلاً من الأقواس ويحظى بشعبية خاصة لملفات الإعدادات.
مثال على الصياغة:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
الخصائص الرئيسية:
- بنية قائمة على المسافات البادئة (بدون أقواس أو حاضنات)
- يدعم التعليقات بعلامة
# - يدعم جميع أنواع بيانات JSON وأكثر (تواريخ، سلاسل نصية متعددة الأسطر)
- حساس للمسافات — المسافات البادئة الخاطئة تكسر الملف
حالات الاستخدام الشائعة: ملفات Docker Compose، بيانات Kubernetes، خطوط أنابيب CI/CD مثل GitHub Actions وGitLab CI، سيناريوهات Ansible، إعدادات Hugo/Jekyll.
YAML هو مجموعة فوقية من JSON، مما يعني أن أي مستند JSON صالح هو أيضاً YAML صالح. ومع ذلك، مرونة YAML قد تكون سلاحاً ذا حدين — تحويل الأنواع الضمني (مثلاً، yes يُفسَّر كقيمة منطقية true، أو 3.10 يصبح 3.1) تسبب في كثير من الأخطاء الخفية.
CSV — قيم مفصولة بفواصل
CSV هو أبسط تنسيق بيانات منظم. يخزن البيانات الجدولية كنص عادي، حيث كل سطر يمثل صفاً والقيم مفصولة بفواصل (أو أحياناً بفواصل منقوطة أو مسافات جدولية أو فواصل أخرى).
مثال على الصياغة:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
الخصائص الرئيسية:
- بسيط للغاية — مجرد نص مع فواصل
- لا أنواع بيانات — كل شيء سلسلة نصية
- لا طريقة قياسية لتمثيل البيانات المتداخلة
- لا معيار رسمي شامل (RFC 4180 موجود لكن لا يُتبع عالمياً)
- أحجام الملفات صغيرة جداً
حالات الاستخدام الشائعة: تصدير جداول البيانات، استيراد/تصدير قواعد البيانات، تحليل البيانات (pandas، R)، تبادل البيانات البسيط، ملفات السجلات.
بساطة CSV هي أعظم نقاط قوته وأكبر قيوده. فهو مثالي للبيانات الجدولية المسطحة لكن لا يمكنه تمثيل الهياكل الهرمية. الحالات الحدية (فواصل داخل القيم، حقول متعددة الأسطر، مشاكل الترميز) تجعل التحليل أكثر تعقيداً مما يبدو للوهلة الأولى.
XML — لغة الترميز القابلة للتوسيع
كان XML تنسيق تبادل البيانات المهيمن قبل أن يتولى JSON المكانة. يستخدم صياغة قائمة على الوسوم مشابهة لـ HTML ويدعم ميزات معقدة مثل المخططات وفضاءات الأسماء والتحويلات.
مثال على الصياغة:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
الخصائص الرئيسية:
- بنية قائمة على الوسوم مع وسوم افتتاحية وختامية
- يدعم السمات وفضاءات الأسماء والمخططات (XSD) والتحويلات (XSLT)
- يدعم التعليقات
- مطوّل جداً مقارنة بالتنسيقات الأخرى
- معيار محدد بدقة شديدة مع تحقق صارم
حالات الاستخدام الشائعة: خدمات ويب SOAP، التكاملات المؤسسية، تنسيقات المستندات (DOCX، SVG، RSS)، ملفات الإعدادات في منظومتي Java و.NET، تبادل البيانات الحكومية والمالية.
XML أكثر إطالة من JSON أو YAML، لكن قدرات التحقق من المخططات تجعله لا غنى عنه في السياقات التي تكون فيها سلامة البيانات والعقود الرسمية بين الأنظمة حاسمة.
مقارنة جنباً إلى جنب
| الميزة | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| القراءة البشرية | جيدة | ممتازة | جيدة (جدولي) | مقبولة |
| الإطالة | منخفضة | منخفضة | منخفضة جداً | عالية |
| التعليقات | لا | نعم | لا | نعم |
| بيانات متداخلة | نعم | نعم | لا | نعم |
| أنواع البيانات | أساسية | غنية | لا شيء (كل شيء نص) | عبر المخطط |
| التحقق من المخطط | JSON Schema | لا معيار | لا | XSD |
| حجم الملف | صغير | صغير | الأصغر | كبير |
| سرعة التحليل | سريعة | متوسطة | سريعة | متوسطة |
| المجال الرئيسي | واجهات ويب | إعدادات DevOps | بيانات/جداول | مؤسسات |
متى تستخدم أياً منها
- اختر JSON عند بناء واجهات ويب API أو تخزين إعدادات مشاريع JavaScript/TypeScript أو تبادل البيانات بين الخدمات. فهو الخيار الافتراضي لمعظم التطبيقات الحديثة.
- اختر YAML عند كتابة ملفات إعدادات يقرأها ويحررها البشر كثيراً. قابليته للقراءة ودعم التعليقات تجعله مثالياً لـ DevOps والبنية التحتية كشفرة.
- اختر CSV عند التعامل مع بيانات جدولية أو الاستيراد/التصدير من جداول البيانات أو قواعد البيانات أو عندما يجب أن يكون حجم الملف أصغر ما يمكن. تجنبه لأي شيء هرمي.
- اختر XML عند التعامل مع أنظمة المؤسسات أو واجهات SOAP API أو السياقات التي تتطلب تحققاً رسمياً من المخططات. وهو أيضاً الخيار الصحيح عندما تحتاج ترميزاً موجهاً للمستندات (مثل SVG أو RSS).
التحويل بين التنسيقات
التحويل بين هذه التنسيقات مهمة شائعة. بعض الأمور التي يجب مراعاتها:
- JSON إلى YAML (والعكس) عادة بدون فقدان لأن YAML مجموعة فوقية من JSON.
- CSV إلى JSON/YAML يعمل جيداً للبيانات المسطحة لكن يتطلب قرارات حول البنية للمخرجات المتداخلة.
- XML إلى JSON قد يفقد معلومات (السمات، فضاءات الأسماء، الترتيب) لأن JSON ليس لديه مفاهيم مكافئة.
- أي تنسيق إلى CSV يعمل فقط إذا كانت البيانات مسطحة أو يمكن تسطيحها بشكل مفيد.
نصيحة. عند التحويل بين التنسيقات، تحقق دائماً من المخرجات. التحويلات التلقائية قد تفقد بيانات بصمت، خاصة مع سمات XML أو تحويل أنواع YAML أو حالات حدية في ترميز CSV.
للمزيد
يوفر ToolK.io أدوات مجانية للتحويل بين JSON وYAML وCSV وXML، وتنسيق بياناتك والتحقق منها، واستكشاف دروس ذات صلة للتعامل مع البيانات المنظمة في مشاريعك.
