محول YAML إلى JSON

الصق YAML على اليمين واحصل على JSON على اليسار. يعمل بالكامل في متصفحك — بدون رفع وبدون تسجيل.

  1. الصق YAML في منطقة النص اليمنى.
  2. انقر «التحويل إلى JSON». يظهر المخرج على اليسار.
  3. انسخ النتيجة أو انقر «تنزيل» لحفظها كـ data.json.
  4. إذا فشل التحويل، تشير رسالة الخطأ إلى السطر المخالف.
ماذا تفعل؟

يحوّل مستندات YAML 1.2 إلى JSON المكافئ. تصبح التعيينات (mappings) كائنات والتسلسلات (sequences) مصفوفات، وتُكتَب القيم العددية كأرقام أو بولين أو null أو سلاسل وفقًا لقواعد YAML. تُحَل المراسي (anchors) والأسماء البديلة (aliases) أثناء التحويل. تُسطَّح تيارات المستندات المتعددة (المفصولة بـ `---`) إلى مصفوفة من المستندات.

مثال

مدخل YAML:

name: Ada
tags:
  - math
  - logic
active: true

مخرج JSON:

{
  "name": "Ada",
  "tags": [
    "math",
    "logic"
  ],
  "active": true
}

أخطاء YAML شائعة وكيفية إصلاحها

يحسس YAML للمسافات البيضاء، وهو مصدر معظم رسائل «فشل التحليل». يشير المحلِّل إلى رقم السطر والعمود للفشل — هذه الأنماط للبحث عنها.

  • علامات تبويب بدلًا من المسافات. يمنع YAML 1.2 علامات التبويب للبادئة. استبدل كل علامة تبويب بمسافات — تحوي معظم المحررات أمر «تحويل علامات التبويب إلى مسافات».
  • مستويات بادئة مختلطة. فرع ببادئة مسافتين تحت أخ ببادئة 4 مسافات سيفشل. اختر عرض بادئة واحد (عادة مسافتان) واستخدمه باستمرار خلال المستند.
  • سلاسل تبدو كقيم بولية. في YAML 1.1 تُحلَّل `yes`، `no`، `on`، `off` كقيم بولية — مفاجئ في رموز الدول (فخ «NO») وسلاسل الإصدار. اقتبس القيمة: `country: "NO"`. يستخدم js-yaml افتراضيًا YAML 1.2 الذي يُصلح ذلك، لكن المدخلات الواقعية ما تزال تواجه المشكلة.
  • محارف خاصة بدون اقتباس. القيم التي تبدأ بـ `- `، `:`، `?`، `&`، `*`، `!`، `|`، `>`، `\'`، `"`، `%`، `@`، `` ` `` تحتاج اقتباسًا. النمط الأكثر أمانًا: اقتبس أي سلسلة تحتوي علامات ترقيم.
  • علامة اقتباس غير منتهية. فقدان `"` أو `\'` للإغلاق يجعل المحلِّل يعامل بقية الملف كجزء من السلسلة حتى علامة الاقتباس التالية — وعادةً ينتج رقم سطر مربك بعيد عن الخطأ الفعلي.
  • عدم تطابق المرساة / الاسم البديل. الأسماء البديلة (`*name`) التي تشير إلى مرساة غير مُعرَّفة (`&name`) تُسبِّب خطأ تحليل. تحقَّق أن لكل اسم بديل مرساة مطابقة مُعلَنة قبله في المستند.
الأسئلة الشائعة

هل يدعم خصوصيات YAML 1.1 مثل «مشكلة النرويج»؟

لا — وهذا متعمَّد. نستخدم js-yaml في وضع YAML 1.2، حيث يُحلَّل `NO` غير المقتبس كسلسلة «NO» وليس البولين false. إذا كانت لديك مدخلات تعتمد على بوليان YAML 1.1، اقتبسها صراحةً قبل اللصق. خلط المواصفتين في أداة واحدة سيترجم بياناتك خطأً بصمت.

ماذا يحدث للمراسي والأسماء البديلة في YAML؟

تُحَل أثناء التحويل. يحوي JSON الناتج القيم المكرَّرة كبيانات عادية — لا تنجو المراسي إلى JSON لأن JSON لا يملك صياغة مرجع مكافئة. إذا احتجت الحفاظ على المراجع، فإن JSON ليس التنسيق الهدف الصحيح.

هل يمكنني تحويل ملفات YAML متعددة المستندات؟

نعم. تُحوَّل ملفات YAML التي تحوي مستندات متعددة مفصولة بـ `---` إلى مصفوفة JSON، حيث يصبح كل مستند عنصرًا في المصفوفة. إذا كان ملفك مستندًا واحدًا فيُحوَّل إلى كائن JSON واحد أو قيمة على المستوى الأعلى.

لماذا تخرج سلسلة التاريخ بصيغة ISO؟

لـ YAML نوع طابع زمني أصلي (`2025-12-31`). يقرأه المحلِّل كـ Date في JavaScript، ويُسلسَل إلى JSON كسلسلة ISO 8601. للحفاظ على النص الحرفي الأصلي، اقتبس القيمة في YAML: `release: "2025-12-31"`.

هل هذا آمن لإعدادات YAML الحساسة؟

نعم. كل شيء يعمل في متصفحك — يُحلَّل مدخلك ويُحوَّل بـ JavaScript على هذه الصفحة، ولا يُرسَل إلى أي خادم. لا توجد سجلات ولا تحليلات على المدخل ذاته ولا احتفاظ. تحقَّق في أدوات المطوّر: لا تنطلق أي طلبات شبكة عند النقر على «تحويل».

ما حجم ملف YAML الذي يمكنه التعامل معه؟

حتى حد ذاكرة متصفحك، لكن واجهة منطقة النص تبدأ بالشعور بالبطء فوق ~10 ميغابايت من YAML. للمدخلات الأكبر، حوّل بأجزاء أو استخدم نفس المكتبة (js-yaml) من سطر الأوامر.