YAML وJSON: أي تنسيق أنسب للإعدادات وكيف تحوّل بينهما
2025-05-20
تهدف YAML 1.2 إلى التوافق مع JSON—أي JSON صالح يجب أن يُقرأ كـ YAML. غالبًا تُكتب إعدادات التشغيل بـ YAML بينما يفضّل التطبيق JSON، لذا يلزم فهم الفروقات.
الفروقات الأساسية
JSON صارم: بلا تعليقات، مفاتيح باقتباس مزدوج، وبنية موحدة. YAML يعتمد المسافات البادئة ويدعم # comments وقيمًا أكثر مرونة.
{ "server": { "port": 8080 } }server:
port: 8080أيّهما لملفات الإعداد؟
للملفات التشغيلية المعدلة يدويًا مثل K8s وCI يكون YAML عمليًا. للبيانات المتبادلة والملفات المولدة آليًا يكون JSON أكثر ثباتًا.
مصائد التحويل
yes/no قد تصبح booleans، وسلاسل النسخ قد تتحول لأرقام، وanchors غير موجودة في JSON، وtabs غير مسموحة في YAML.
التحويل عبر CLI
استخدم yq أو js-yaml أو PyYAML، ثم نفّذ JSON.parse بعد التحويل لكشف تغييرات الأنواع الصامتة.
نصائح Kubernetes العملية
احتفظ بـ YAML في المستودع، وحوّل في CI فقط عندما يطلب مستهلك JSON. لا تكتب manifests ضخمة بصيغة JSON يدويًا.
الخلاصة
للبشر: YAML. للآلات: JSON. ثبّت إصدارات الأدوات وتحقق بعد كل تحويل.