YamlBox

مقالة إرشادية · 6 دقيقة للقراءة

YAML مقابل JSON: متى يتم استخدام أي منها

YAML vs JSON هو الاختيار بين تنسيقين للتسلسل مبنيين على نفس الفكرة الأساسية: أزواج وقوائم القيمة الرئيسية. الاختلافات المهمة في الممارسة العملية تتعلق بمن يقرأ الملف: البشر أم الآلات.

تم التحديث

YAML vs JSON: النسخة القصيرة

JSON هو تنسيق لتبادل البيانات: صارم، لا لبس فيه، ويمكن لكل لغة تحليله محليًا. YAML هو تنسيق تكوين: فهو يقبل التعليقات والسلاسل متعددة الأسطر، وهو مصمم ليتم تحريره بواسطة الأشخاص في طلبات السحب. استخدم JSON على السلك، YAML في الملفات التي يحتفظ بها البشر - وقم بالتحويل بينها عندما يتطلب الحد ذلك.

ما يختلف في الواقع

تعليقات

YAML لديه تعليقات; 1 ــ لا . يعد هذا أمرًا حاسمًا في ملفات التكوين - عادةً ما يكون السبب الذي يجعلك تعرف سبب ضبط المهلة على 3000 هو التعليق الموجود فوقها. عندما تقوم بتحويل YAML إلى JSON يتم إسقاط التعليقات، ولهذا السبب يتم التعامل مع JSON غالبًا على أنها قطعة أثرية بناء، وليس مصدر الحقيقة.

بناء الجملة والضوضاء

                # YAML
service:
  name: checkout
  replicas: 3
  ports: [8080, 9090]

// JSON — same data
{
  "service": {
    "name": "checkout",
    "replicas": 3,
    "ports": [8080, 9090]
  }
}
              

YAML يزيل الأقواس وعلامات الاقتباس والفواصل مقابل حساسية المسافة البادئة. هذه هي التجارة التي يعرفها كل مستخدم: عدد أقل من الأحرف، والمزيد من الطرق لخطأ المسافات البيضاء بمهارة.

أنواع والفخاخ

  • يحتوي JSON على نوع رقمي واحد؛ يميز YAML بين ints وfloats والمزيد - ويشتهر YAML 1.1 بتحليل رمز البلد NO باعتباره خطأ منطقيًا، و1.10 كرقم يفقد الصفر الزائد ما لم يتم اقتباسه.
  • YAML يدعم نقاط الارتساء والأسماء المستعارة (&الافتراضيات / *الافتراضيات) لإعادة الاستخدام؛ JSON ليس له مكافئ، لذلك يجب تكرار الكتل المشتركة أو إنشاؤها.
  • YAML يدعم ملفات المستندات المتعددة (--- الفواصل)؛ JSON وثيقة واحدة لكل ملف. تقوم المحولات عادةً بتحويل المستندات إلى مصفوفة.
  • يتطلب JSON مفاتيح وسلاسل ذات علامات اقتباس مزدوجة؛ يقتبس YAML فقط عند الضرورة، مما يعني أن السلسلة المهملة يمكن أن تصبح رقمًا أو قيمة منطقية بصمت.

حيث يفوز كل تنسيق

  • واجهات برمجة التطبيقات وتنسيقات الأسلاك: JSON. محللون عالميون، غموض يمكن التنبؤ به، سهل البث (خطوط 1).
  • Kubernetes، CI/CD، Docker Compose، Ansible، Helm: YAML، لأن هذه الأنظمة البيئية موحدة عليها وتدعم التعليقات.
  • تكوين البائع الذي تقوم بإنشائه برمجيًا: JSON - تنتجه الخوارزميات دون القلق بشأن المسافة البادئة.
  • المستندات التي سيقوم أحد أعضاء الفريق المبتدئين بتحريرها يدويًا: YAML، مع تعليقات توضح السبب.

التحويل بأمان

  1. تعرف على ملفاتك متعددة المستندات. يجب أن تصبح مجموعة بيان k8s مفصولة بـ --- مصفوفة JSON، وليس المستند الأول فقط. استخدم محولًا يُبلغ عن عدد المستندات التي تم العثور عليها.
  2. اقتبس الأرقام التي هي معرفات. "1.10" هو الإصدار؛ 1.10 هو تعويم. قم بتمكين علامات الاقتباس القسرية عند التحويل إلى YAML إذا كانت القيم عبارة عن سلاسل تبدو رقمية.
  3. شاهد التعليقات تختفي. التحويل إلى JSON يعتبر ضياعًا بحكم التعريف؛ إذا كانت التعليقات مهمة، فاحتفظ بـ YAML كمصدر وقم بإنشاء JSON فقط في وقت الإنشاء.
  4. التحقق من صحة مع وجود أخطاء دقيقة. تؤدي أخطاء المسافة البادئة إلى ظهور رسائل مضللة في بعض الأدوات؛ تأكد من أن يظهر لك الخط والعمود.

جربه: الصق أي YAML في المحول YAML إلى JSON - دعم المستندات المتعددة وخطوط الخطأ الدقيقة مضمنة، ولا يتم تحميل أي شيء.

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

هل YAML هي مجموعة شاملة من JSON؟

تم تصميم YAML 1.2 كمجموعة شاملة - صالحة JSON عادة ما تكون صالحة YAML. لكن 3.1.1 (لا يزال موجودًا) يختلف في بعض حالات الحافة، ويتم تحليل علامات التبويب والمفاتيح المكررة وسلاسل معينة بشكل مختلف عبر المحركات. تعامل مع عبارة "إنها صالحة من الناحية الفنية 4" باعتبارها حقيقة ممتعة، وليس استراتيجية للهجرة.

أيهما أسرع في التحليل؟

JSON المحللون بشكل عام أسرع وأبسط لأن القواعد أصغر؛ يوجد التحليل الأصلي في كل وقت تشغيل. بالنسبة لملفات التكوين، يكون الاختلاف غير ذي صلة — حيث يتم التحليل مرة واحدة عند بدء التشغيل.