JSON Toolkit

JSON أم YAML

الخلاصة: JSON يحدد البنية بالأقواس وYAML بالمسافات البادئة: الآلات تأخذ JSON، والبشر الذين يحررون التهيئة يأخذون YAML. التعليقات والمراسي وبنية المستندات المتعددة لا تنجو من التحويل.

مبتدئقراءة نحو 4 دقيقةنُشر في 2026-10-30حُدِّث في 2026-10-30
متى تستخدم JSON ومتى تستخدم YAML

الخلاصة: استخدم JSON لبيانات الآلة إلى الآلة وYAML للتهيئة التي يحررها البشر؛ رجّح YAML عندما تحتاج إلى تعليقات أو نص متعدد الأسطر أو مراسٍ، وJSON عندما يجب أن تُحلَّل كل لغة الحمولة نفسها بلا غموض.

جنبًا إلى جنب

{
  "server": {
    "host": "127.0.0.1",
    "port": 8080
  }
}
server:
  host: 127.0.0.1
  port: 8080

البنية نفسها. يحذف YAML علامات الترقيم ويكسب مكانًا للتعليق.

أين يختلفان

JSON YAML
البنية الأقواس والفواصل المسافات البادئة
التعليقات لا يوجد نعم
السلاسل النصية علامات اقتباس مزدوجة، ويلزم الهروب عادةً بلا اقتباس
النص متعدد الأسطر هروب \n أو مصفوفات كتل نصية بـ`
إعادة الاستخدام لا يوجد مراسٍ & وأسماء بديلة *
مستندات متعددة تُلف في مصفوفة فواصل ---
سرعة التحليل سريعة أبطأ، قواعد المسافات البادئة
الغموض منخفض جدًا يُحلَّل no كقيمة منطقية، وخطأ مسافة بادئة بمقدار واحد

هذا الصف الأخير هو التكلفة الحقيقية لـYAML. في YAML 1.1، تُنتج country: NO القيمة المنطقية false، وقد يصير version: 1.0 عددًا عشريًا. أما JSON فلا يحمل أي كتابة ضمنية إطلاقًا.

الاختيار

JSON: أجسام الطلبات والاستجابات، ورسائل الخدمة إلى الخدمة، وأعمدة JSON في قواعد البيانات، وكل ما يجب أن يُحلَّل بالطريقة نفسها في كل لغة.

YAML: البيئات التي يكون فيها التنسيق الافتراضي (Kubernetes، Ansible، GitHub Actions، Docker Compose)؛ والتهيئة التي تحتاج إلى شرح؛ والملفات التي يغلب عليها نص طويل مثل الشهادات والسكربتات وSQL.

ما يفقده التحويل

YAML → JSON: كل التعليقات، وإعادة استخدام المراسي (تُوسَّع إلى نسخ مكررة)، وكل المستندات عدا الأول، والكتابة الأصلية للتواريخ والقيم المنطقية.

JSON → YAML: يضعف التمييز بين السلسلة والعدد، لذا يحتاج "8080" و8080 كلاهما إلى اقتباس صريح ليبقيا آمنين.

حوّل لأغراض الترحيل والفحص لمرة واحدة. لا تحتفظ بالملف نفسه بتنسيقين كعرضين متوازيين.

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

كيف أقرر بين JSON وYAML؟

ابدأ بمن يقرأ الملف ويصونه: استخدم JSON عندما يولده برنامج، ويعبر حدود اللغات، ويجب أن يُحلَّل بشكل متوقع؛ واستخدم YAML عندما يحرره إنسان ويحتاج إلى شروح للحقول أو نص طويل متعدد الأسطر. يُحوَّل أحدهما إلى الآخر، لكن لا تحتفظ بالتهيئة نفسها بالتنسيقين على المدى الطويل.

لماذا يُنتج YAML غموضًا أكبر في الأنواع؟

‏YAML يحمل كتابة ضمنية، لذا يمكن أن تتحول قيم مثل NO أو on أو 1.0 إلى قيم منطقية أو تواريخ أو أعداد. أما JSON فأنواعه صريحة فقط: يجب أن تُقتبس السلسلة، وهو ما يجعل التحليل أكثر قابلية للتوقع عبر اللغات.

هل ينبغي أن تبقى التعليقات والمراسي عند تحويل YAML إلى JSON؟

لا. لا يمكن تمثيل تعليقات YAML ومراسيها ومستنداتها المتعددة في JSON؛ فالمراسي تُوسَّع إلى محتوى مكرر. وإن كنت بحاجة إلى الحفاظ عليها، فاستخدم مكتبة YAML بواجهة Document بدلًا من رحلة ذهاب وإياب عبر كائن.

قراءة إضافية