محوّل YAML إلى JSON

الصق YAML (ملفات Kubernetes أو Docker Compose أو إعدادات CI) واحصل على JSON نظيف فورًا. تعرض الأخطاء السطر بالضبط مع مؤشر.

يعمل في متصفحكبدون تسجيللا يُرفع شيء

مخرجات JSON

طريقة استخدام YAML إلى JSON

  1. الصق YAML في المربع الأيمن أو افتح ملف .yaml/.yml.
  2. يظهر JSON على اليسار أثناء الكتابة. اختر مسافتين أو 4 مسافات أو Tab للمخرجات.
  3. فعّل ترتيب المفاتيح لترتيب المفاتيح أبجديًا. يفيد ذلك عند مقارنة ملفات الإعداد.
  4. إذا كان YAML غير صالح، يعرض شريط الحالة السطر والعمود، وتظهر الأسطر المسببة للخطأ أسفله مع علامة ^.
  5. انسخ JSON أو نزّله، أو اضغط تبديل لتحويله مرة أخرى إلى YAML.

كيف يُربط YAML بـ JSON

JSON مجموعة جزئية من YAML 1.2، لذا تصبح كل mapping في YAML كائن JSON، وكل sequence مصفوفة، وتصبح القيم المفردة سلاسل نصية أو أعدادًا أو قيمًا منطقية أو null. وتُعالَج الميزات الخاصة بـ YAML أثناء التحويل:

  • التعليقات (# …) تُحذف، لأن JSON لا يدعم التعليقات.
  • المراسي والأسماء المستعارة (&base و*base و<<: *base) تُوسَّع إلى نسخ كاملة.
  • الطوابع الزمنية مثل 2024-01-02 تصبح سلاسل ISO 8601.
  • السلاسل متعددة الأسطر (كتل | الحرفية و> المطوية) تصبح سلاسل عادية مع تسلسلات \n.

YAML متعدد المستندات

يمكن لملف واحد أن يحتوي على عدة مستندات YAML مفصولة بـ ---، كما هو شائع في ملفات Kubernetes. لا يوجد مكافئ لذلك في JSON، لذا يُرجع المحوّل مصفوفة JSON بعنصر واحد لكل مستند ويذكر ذلك في شريط الحالة. ويُتجاهل --- المنفرد في النهاية.

مزالق YAML 1.1 مقابل 1.2

يتبع هذا المحوّل YAML 1.2، المواصفة الحالية. لا تزال كثير من الأدوات القديمة (PyYAML وPsych في Ruby وبعض إصدارات Kubernetes وAnsible) تقرأ YAML 1.1، حيث تختلف القواعد:

  • مشكلة النرويج: في YAML 1.1، يعني country: no القيمة false، فيختفي رمز النرويج NO. والأمر نفسه ينطبق على yes وon وoff وy وn. أما YAML 1.2 فلا يعتبر قيمًا منطقية سوى true وfalse.
  • الأعداد الثمانية: 0755 عدد ثماني في 1.1 لكنه عدد عشري عادي في 1.2، التي تستخدم 0o755. اقتبس أذونات الملفات لتكون في أمان.
  • الأعداد الستينية: في 1.1، قد يُحلَّل 22:30 كالعدد 1350. اقتبس الأوقات وتعيينات المنافذ مثل "8080:80".

يقتبس اتجاه JSON → YAML السلاسل الملتبسة ('no' و'on' و'y') تلقائيًا، لذا يُقرأ YAML الناتج بالطريقة نفسها في الإصدارين.

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

هل يُرفع YAML الخاص بي إلى أي مكان؟
لا. يتم التحليل في متصفحك باستخدام مكتبة js-yaml مفتوحة المصدر. ملفات الإعداد التي تحتوي على أسرار أو أسماء مضيفين داخلية لا تغادر جهازك أبدًا.
لماذا يفشل YAML لديّ بخطأ “bad indentation”؟
يُحدَّد التداخل في YAML بالمسافات، ولا يُسمح بعلامات Tab للمسافة البادئة. تأكد من أن المفاتيح الشقيقة متحاذية تمامًا وأن عناصر القوائم (-) ذات مسافة بادئة متسقة تحت المفتاح الأب.
ماذا يحدث لتعليقات YAML؟
تُحذف. لا يملك JSON صياغة للتعليقات، لذا لا يمكن نقلها. والتحويل مرة أخرى إلى YAML لن يستعيدها.
لماذا بقيت <code>no</code> سلسلة نصية؟
تتبع هذه الأداة YAML 1.2، حيث لا تُعد قيمًا منطقية سوى true/false. أما محللات YAML 1.1 القديمة فتحوّل no وyes وon وoff إلى قيم منطقية (“مشكلة النرويج”).
هل يمكنني تحويل ملف Kubernetes يحتوي على عدة موارد؟
نعم. يصبح كل مورد مفصول بـ --- عنصرًا في مصفوفة JSON الناتجة، جاهزًا لـ jq أو kubectl apply -f -، الذي يقبل قوائم JSON أيضًا.

أدوات ذات صلة