كيفية الاستخدام
- اختر اتجاه التحويل: JSON → YAML أو YAML → JSON.
- الصق بياناتك أو اضغط على «جرّب مثالًا». ستتحدّث النتيجة أثناء الكتابة.
- اختر مسافة بادئة من مسافتين أو أربع مسافات للناتج.
- انسخ النتيجة أو نزّلها. يبدّل «استخدام الناتج كمدخل» اتجاه التحويل لتتمكن من التحويل عكسيًا.
كيف تعمل الأداة
تستخدم عملية التحويل مكتبة yaml مفتوحة المصدر (الإصدار 2)، التي تطبّق مواصفات YAML 1.2. يُعد YAML 1.2 مجموعة شاملة من JSON من الناحية العملية، لذا يمكن تحويل أي مستند JSON إلى YAML دون فقدان البيانات، كما يمكن تحويل YAML الذي يستخدم الخرائط والقوائم والسلاسل النصية والأرقام والقيم المنطقية وnull فقط إلى JSON مطابق.
عند كتابة YAML، تضع الأداة علامات اقتباس حول السلاسل النصية التي قد يفسرها القارئ على أنها قيمة أخرى. فمحللات YAML 1.1 الأقدم، مثل PyYAML والعديد من أدوات CI، تقرأ yes وno وon وoff كقيم منطقية، و0777 كعدد ثماني، و2024-01-31 كتاريخ؛ لذلك تُكتب هذه القيم على الشكل "yes" و"0777" و"2024-01-31". لا تُقسّم السلاسل الطويلة على عدة أسطر. لا يمكن الاحتفاظ بالتعليقات، لأن JSON لا يدعمها.
عند قراءة YAML، تُوسّع المراسي (&name) والأسماء المستعارة (*name)، بما في ذلك مفتاح الدمج <<، ويُحوّل الملف الذي يحتوي على عدة مستندات مفصولة بـ --- إلى مصفوفة JSON. ولحماية متصفحك، ثمة حد لتوسيع الأسماء المستعارة، ما يمنع مستندات «ضحك المليار». تُحوّل قيم YAML التي لا مقابل لها في JSON بأقرب صيغة ممكنة: يتحول .inf و.nan إلى null، وتبقى الطوابع الزمنية سلاسل نصية. تُعرض أخطاء الصياغة مع رقم السطر والعمود.
أمثلة
ملف بيان Kubernetes
يُحوّل ملف Deployment مكتوب بصيغة JSON بواسطة نص برمجي إلى تنسيق YAML الذي يتوقعه مستخدمو kubectl، حيث تُكتب القوائم ضمن containers بالشكل - name: web. وتبقى القيم مثل "no" محاطة بعلامات اقتباس لتظل سلاسل نصية.
إعداد CI مع مراسٍ
يحدّد ملف pipeline القيم الافتراضية باستخدام &defaults، ويعيد استخدامها عبر <<: *defaults. ويُظهر التحويل إلى JSON المفاتيح التي يحصل عليها كل عمل بعد الدمج.
مواصفات OpenAPI
يُصان ملف OpenAPI بصيغة YAML، لكن أداة إنشاء التعليمات البرمجية تحتاج إلى JSON. الصق YAML، واختر مسافة بادئة من مسافتين، ثم نزّل ملف .json.
الأسئلة الشائعة
لماذا تُكتب "yes" بين علامتي اقتباس في YAML؟
وفق قواعد YAML 1.1، التي ما زالت تستخدمها PyYAML وAnsible والعديد من الأدوات الأخرى، تُعد yes أو no أو on أو off غير المحاطة بعلامات اقتباس قيمة منطقية. وتضمن علامات الاقتباس بقاءها سلسلة نصية في جميع المحللات. ولا تُعد علامات الاقتباس جزءًا من القيمة.
هل تُحفظ تعليقات YAML عند التحويل إلى JSON؟
لا. لا يتضمن JSON صيغة للتعليقات، لذا تُحذف التعليقات. ولن يؤدي تحويل JSON مجددًا إلى YAML إلى استعادتها.
ماذا يحدث عند وجود عدة مستندات YAML مفصولة بـ ---؟
تُحوّل إلى مصفوفة JSON واحدة، بعنصر لكل مستند وبالترتيب نفسه. أما المستند الواحد فيُحوّل مباشرةً إلى قيمته.
ماذا عن الوسوم المخصصة مثل !Ref في CloudFormation؟
لا تُفهم الوسوم الخاصة بتطبيقات معينة. تعرض الأداة تحذيرًا وتحول القيمة الموسومة إلى قيمة عادية؛ لذا تصبح !Ref MyBucket السلسلة النصية "MyBucket"، ويُفقد الوسم نفسه.
الخصوصية
تجري عمليتا التحويل بالكامل في متصفحك. لا تُرفع بيانات JSON أو YAML، ولا تُخزّن أو تُضمّن في بيانات التحليلات.