Utilia

محوّل JSON إلى YAML

حوّل JSON إلى YAML وYAML إلى JSON في متصفحك، مع دعم المراسي ومفاتيح الدمج والملفات متعددة المستندات. لا يُرفع أي شيء.

اتجاه التحويل

كيفية استخدام محوّل JSON إلى YAML

  1. اختر اتجاه التحويل: JSON → YAML أو YAML → JSON.
  2. الصق بياناتك، أو انقر فتح ملف لتحميل ملف .json أو .yaml أو .yml (حتى 10 MB).
  3. اختر المسافة البادئة (مسافتان أو 4 مسافات)، وفعّل إن شئت ترتيب المفاتيح أبجديًا.
  4. انقر تحويل، أو تابع الكتابة ببساطة: تتحدّث النتيجة تلقائيًا. وإذا كان الإدخال غير صالح، تحدد رسالة الخطأ رقم السطر والعمود حيث تقع المشكلة.
  5. انسخ النتيجة أو نزّلها. يعيد زر عكس الاتجاه الناتج إلى مربع الإدخال لتحويله في الاتجاه المعاكس.

JSON وYAML: البيانات نفسها بصياغة مختلفة

YAML عمليًا مجموعة شاملة لـJSON: فكل مستند JSON يصف بيانات يستطيع YAML التعبير عنها، ويضيف YAML صياغة أخف يسهل على البشر قراءتها وتعديلها. لهذا تُكتب عادةً ملفات Kubernetes وDocker Compose ومسارات GitHub Actions وGitLab CI ودفاتر Ansible ومواصفات OpenAPI بصيغة YAML، بينما تتبادل الواجهات البرمجية والبرامج بيانات JSON.

البيانات نفسها بالصيغتين:

{"name": "web", "ports": [80, 443], "env": {"DEBUG": false}}
name: web
ports:
  - 80
  - 443
env:
  DEBUG: false

من JSON إلى YAML

يكتب المحوّل YAML بأسلوب الكتل: مفتاح واحد في كل سطر، والقوائم بشرطات، والكائنات المتداخلة مزاحة. لا تُطوى السلاسل الطويلة أبدًا، وتستخدم السلاسل متعددة الأسطر الأسلوب الحرفي | لتبقى فواصل الأسطر كما هي تمامًا. أما السلاسل التي قد يقرؤها YAML على أنها نوع آخر فتُحاط بعلامات اقتباس: فتبقى "yes" و"1.0" و"null" سلاسل نصية بعد رحلة الذهاب والإياب. ويرتّب خيار ترتيب المفاتيح مفاتيح كل كائن أبجديًا، مما يسهّل مقارنة ملفَّي إعدادات.

من YAML إلى JSON

يُقرأ YAML وفق المخطط الأساسي لـYAML 1.2، وهي القواعد نفسها التي تتبعها معظم الأدوات الحديثة:

  • تصبح true/false والأرقام وnull (أو ~) قيم JSON، بينما تبقى yes وno وon وoff سلاسل نصية كما تشترط مواصفة YAML 1.2.
  • تُوسَّع المراسي والأسماء المستعارة (&base و*base)، وتُدعم مفاتيح الدمج (<<: *base) الشائعة في ملفات CI.
  • يصبح الملف الذي يضم عدة مستندات مفصولة بـ--- مصفوفة JSON فيها عنصر لكل مستند، وتخبرك رسالة بعدد المستندات المدمجة.
  • تُحذف التعليقات، إذ لا يدعم JSON التعليقات.
  • ليس لـ.inf و.nan مقابل في JSON، فتُكتبان كسلسلتين نصيتين "Infinity" و"NaN".

لحماية متصفحك من ملفات «billion laughs» التي تتمدد فيها بضعة أسماء مستعارة إلى مليارات القيم، يُرفض أي مستند يتمدد إلى أكثر من مليون قيمة.

أخطاء YAML الشائعة

  • علامات الجدولة في الإزاحة: لا يسمح YAML إلا بالمسافات.
  • إزاحة غير متسقة: يجب أن تبدأ عناصر القائمة أو الكائن الواحد في العمود نفسه.
  • غياب المسافة بعد النقطتين: key:value سلسلة نصية واحدة، بينما key: value زوج مفتاح وقيمة.
  • محارف خاصة دون علامات اقتباس: القيمة التي تبدأ بـ@ أو علامة الإسناد الخلفية أو * أو & أو !، أو التي تحتوي على : أو #، يجب إحاطتها بعلامات اقتباس.

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

هل يُرسل ملفي إلى خادم؟

لا. يجري التحويل في متصفحك، ولا تغادر ملفات الإعدادات أو الأسرار أو بيانات API جهازك أبدًا.

لماذا لا تتحول «yes» و«no» إلى قيم منطقية؟

منذ YAML 1.2، لم تعد القيم المنطقية سوى true وfalse. كانت محلّلات YAML 1.1 القديمة تعامل yes وno وon وoff كقيم منطقية، وهو ما سبّب «مشكلة النرويج» الشهيرة (رمز البلد NO يُقرأ على أنه false). تتبع هذه الأداة YAML 1.2.

هل تُحفظ تعليقات YAML؟

لا. لا يدعم JSON التعليقات، لذا تضيع عند التحويل YAML → JSON. وعند التحويل JSON → YAML يمكنك إضافة التعليقات إلى النتيجة لاحقًا.

هل يمكنني تحويل ملف Kubernetes يضم عدة موارد؟

نعم. يصبح كل مورد مفصول بـ--- عنصرًا في مصفوفة JSON. وعند تحويل هذه المصفوفة مجددًا إلى YAML تحصل على مستند واحد يحتوي على قائمة.

هل يغيّر المحوّل ترتيب المفاتيح؟

لا، إلا إذا فعّلت ترتيب المفاتيح: تحافظ المفاتيح على ترتيب ظهورها في إدخالك. والاستثناء الوحيد مصدره JavaScript نفسها: المفاتيح التي هي أعداد صحيحة، مثل "10" أو "2"، توضع أولًا بترتيب تصاعدي.