ما الفارق بين YAML وJSON؟

YAML وJSON هما تنسيقان لتسلسل البيانات يوفران آلية تبادل بيانات يمكن للإنسان قراءتها. وهما ينسّقان البيانات بطريقة موحّدة لإتاحة تبادلها بين التطبيقات البرمجية، ويمكن أيضًا للعناصر البشرية قراءة نصوصهما. كلاهما يمثل البيانات كأزواج مفتاح-قيمة. يدعم JSON كائنات البيانات كقيم، بينما لا يدعم YAML ذلك. ومع ذلك، يدعم YAML أنواع بيانات أكثر وهو أفضل في استخدامه للغة الطبيعية لدعم استخدام المطورين.

اقرأ حول JSON »

تمثيل البيانات: YAML مقابل JSON

يتشابه شكل وبنية JSON وYAML ولكنهما يختلفان قليلًا.

في لمحة سريعة، يبدو تنسيق JSON أكثر شبهًا بالآلة في تمثيله للبيانات مقارنةً بـ YAML. تتضمن رسالة JSON الرموز التالية:

  • الأقواس المعقوصة للكائنات
  • النقطتان لفصل أزواج المفتاح-القيمة
  • الأقواس المربعة للمصفوفات 
  • علامات الاقتباس لاحتواء السلاسل

تم بناء JSON من مجموعة فرعية صغيرة من JavaScript. ولذا، فإن بنائها اللغوي يجعل مستندات JSON تبدو مشابهةً لكود البرمجة.
 

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

  • المسافة البادئة لتمثيل الكائنات 
  • النقطتان لفصل أزواج المفتاح-القيمة
  • الواصلات للمصفوفات
  • علامات التجزئة للدلالة على تعليق

تم إنشاء YAML في الأصل لتبسيط XML.

أمثلة المستندات: YAML مقابل JSON

فيما يلي أمثلة للشكل الذي سيبدو عليه مستند يحتوي على بيانات منتج خاصة بقميص في YAML وJSON.

YAML

JSON

type: T-Shirt

price: 20.00

sizes:

  • S
  • M
  • L

   reviews: # Note about reviews

  • username: user1

         rating: 4

         created_at: 2023-04-19T12:30:00Z

  • username: user2

         rating: 5

         created_at: 2023-05-02T15:00:00Z

{

  "product": {

    "type": "T-Shirt",

    "price": 20.00,

    "sizes": ["S", "M", "L"]

    "reviews": {

      { "username": "user1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" },

      { "username": "user2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" }

    }

  }

}

الاختلافات الأساسية: YAML مقابل JSON

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

أنواع البيانات

يدعم تنسيق JSON أنواع البيانات التالية:

  • العدد
  • القيمة المنطقية
  • القيمة الخالية
  • السلسلة
  • المصفوفة
  • الكائن (مجموعة من أزواج المفتاح-القيمة المتداخلة)

يدعم تنسيق YAML جميع أنواع البيانات الأصيلة لأي لغة برمجة ديناميكية. على سبيل المثال، يدعم مجموعات البيانات المتداخلة المكونة من التسلسلات (القوائم) والمقاييس (مثل الأعداد والسلاسل) والتعيينات (أزواج المفتاح-القيمة). هذا الدعم يتيح لك إنشاء هياكل بيانات أكثر تعقيدًا. 

الدعم المدمج

يُستخدم JSON على نطاق واسع مع العديد من لغات البرمجة المختلفة. على سبيل المثال، تقدم JavaScript دعمًا مدمجًا لتحليل JSON. وأيضًا فإن مكتبة Python القياسية تتضمن JSON، ومكتبة JSON مدمجة في PHP 5.2. وبالمثل، فإن أكثر من 50 لغة شائعة أخرى تدعم JSON من خلال مجموعة متنوعة من الحزم والمكتبات.

في المقابل، لا توجد لغات شهيرة تحتوي على دعم مضمن لـ YAML. بدلاً من ذلك، يجب على المطورين تثبيت المكتبات واستخدامها. اثنان من أدوات تحليل YAML الشهيرة هما PyYAML لـ Python وLibYAML لـ C. 

التقسيم إلى إصدارات 

يمكنك تقسيم كل من JSON وYAML إلى إصدارات من خلال برامج التقسيم إلى إصدارات مثل Git. ومع ذلك، يعتبر من الأسهل فحص التغيرات الموجودة في ملفات YAML وفهمها بين الإصدارات.

التعليقات

لا يتوفر دعم التعليقات في تنسيق بيانات JSON. يجب على المطورين تحديد زوج مفتاح-قيمة للتعليق كوسيلة للتغلب على ذلك.

في ملف YAML، تتبع التعليقات رمز تجزئة.

حالات استخدام YAML مقابل JSON

بفضل شمولية الدعم والتكامل مع JavaScript، يعد JSON تنسيق تسلسل البيانات الأكثر شيوعًا في معظم حالات الاستخدام عبر YAML. يُستخدم JSON على نطاق واسع في اتصالات البرامج الموزعة، وتطبيقات الويب، وملفات التكوين، وواجهات برمجة التطبيقات.

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

من ناحية أخرى، اكتسبت YAML حضورًا قويًا في بعض مجالات الحوسبة بسبب قابليتها للقراءة ودعمها للتعليقات. والجدير بالذكر أن YAML هو تنسيق تسلسل البيانات الأساسي في ملفات التكوين في العديد من أدوات وخدمات الأتمتة وDevOps والبنية التحتية كرمز (IaC). على سبيل المثال، يكثر استخدام YAML في ملفات Docker وKubernetes.

يُستخدم YAML أيضًا في كتابة ملفات التكوين في عروض Amazon Web Services (AWS) هذه: AWS CloudFormation، ونموذج التطبيقات بلا خوادم من AWS (AWS SAM)، وAWS CodeBuild.

ملخص الاختلافات: YAML مقابل JSON

 

JSON

YAML

ما التعريف؟

تنسيق تسلسل البيانات لتبادل البيانات المهيكلة بين التطبيقات والخدمات البرمجية. يعطي الأولوية لاستخدام التطبيق على الاستخدام البشري. 

تنسيق تسلسل البيانات لتبادل البيانات المهيكلة بين التطبيقات والخدمات البرمجية. يعطي الأولوية للاستخدام البشري على استخدام التطبيقات.

حالات الاستخدام الرئيسية

ينتشر استخدامه في المنصات، واللغات، واتصالات البرمجيات الموزعة، وتطبيقات الويب، وملفات التكوين، وواجهات برمجة التطبيقات.

ملفات التكوين في العديد من الأدوات والخدمات الخاصة بالأتمتة وعمليات DevOps والبنية التحتية كرمز (IaC).

قابلية القراءة

سهلة

أسهل.

أنواع البيانات

العدد، والقيمة المنطقية، والقيمة الخالية، والسلسلة، والمصفوفة، والكائن.

يدعم جميع أنواع البيانات من خلال مجموعات البيانات المتداخلة التي تشتمل على تسلسلات ومقاييس وتعيينات.

دعم التعليقات

لا.

نعم.

دعم كائنات البيانات كقيم

نعم.

لا.

التقسيم إلى إصدارات

نعم، ولكن ليس من السهل معرفة الاختلافات بين الإصدارات وفهمها في لمحة سريعة.

نعم، ومن السهل معرفة الاختلافات بين الإصدارات وفهمها في لمحة سريعة.

كيف تساعدك AWS في تلبية متطلبات YAML وJSON؟

يمكن لجميع خدمات تكامل البيانات التي تقدمها AWS أن تعالج ملفات JSON. وفيما يلي ثلاث خدمات من AWS ذات صلة:

  • AWS Glue هي خدمة تكامل بيانات بلا خادم. يُمكنك استخدام AWS Glue في اكتشاف البيانات وتجهيزها ودمجها لاستخدامها في التحليلات وتعلّم الآلة وتطوير التطبيقات.
  • خدمة قوائم الانتظار البسيطة في Amazon (Amazon SQS) هي خدمة قوائم انتظار رسائل مُدارة بالكامل. يمكنك استخدامها في إرسال الرسائل وتخزينها واستقبالها بين المكونات البرمجية وبأي حجم. تحتوي رسائل Amazon SQS على ما يصل إلى 256 كيلوبايت من البيانات النصية، بما في ذلك لغة التوصيف القابلة للتوسعة (XML) وJSON والنص غير المنسق.
  • Amazon DocumentDB (بالتوافق مع MongoDB) هي قاعدة بيانات مستند أصلية مُدارة بالكامل بتنسيق JSON. تسهِّل Amazon DocumentDB تشغيل أعباء عمل المستندات المهمة على أي نطاق تقريبًا بدون إدارة بنية تحتية، وتجعل هذا التشغيل ميسور التكلفة.

وبالمثل، فإن أدوات المطورين على AWS تدعم ملفات YAML في العديد من خدمات النشر. فيما يلي مثالان:

  • تتيح لك AWS Step Functions إنشاء مهام سير عمل مرنة بلا خادم عن طريق استخدام خدمات AWS - مثل AWS Lambda، وخدمة الإشعارات البسيطة في Amazon (Amazon SNS)، وAmazon DynamoDB. تدعم Step Functions أيضًا تعريفات أجهزة حالة YAML. هذا يجعل من الممكن تحديد مهام سير العمل بنفس اللغة التي تستخدمها البنية التحتية كرمز (IaC).
  • AWS App2Container هي أداة سطر أوامر يمكنك استخدامها في ترحيل وتحديث تطبيقات Java و.NET على الويب إلى تنسيق الحاوية. تقوم بإنشاء ملفات YAML خاصة بتعريفات مهام Amazon Elastic Container Service (Amazon ECS) ونشر Kubernetes. كما أنها تتبع أفضل ممارسات AWS المتعلقة بالأمان وقابلية التوسع.

ابدأ استخدام YAML وJSON على AWS عن طريق إنشاء حساب اليوم.