كيفية تحويل تحويل YAML إلى JSON
- 01أضف ملفات YAMLاختر الملفات أو أفلتها على الصفحة.
- 02التحويل على جهازكلا يُرفع أي شيء. عدّل الإعدادات إن أردت.
- 03تنزيلاحفظ كل ملف على حدة، أو كلها في ملف ZIP واحد.

ما هو YAML؟
صيغة إعداد سهلة القراءة تستخدمها Docker وKubernetes وأدوات CI.
حوّل YAML إلى JSON عندما يحتاج سكربت أو واجهة API أو أداة إلى JSON: ملف Kubernetes، أو ملف Docker Compose، أو مسار CI، أو مواصفات OpenAPI تريد قراءتها في الكود. أفلت ملف .yaml أو .yml، واختر المسافة البادئة، فيُبنى JSON في متصفحك، وبذلك لا تغادر ملفات الإعدادات التي تحتوي على أسماء خوادم داخلية أو مفاتيح جهازك أبدًا.
كيف يبدو ملف JSON
تصبح الخرائط (mappings) كائنات، وتصبح القوائم مصفوفات، وتحافظ المفاتيح على ترتيبها. فالملف الذي يحتوي على name: web وreplicas: 3 وقائمة ports فيها - 80 و- 443 يصبح {"name": "web", "replicas": 3, "ports": [80, 443]}.
يُعامَل النص متعدد الأسطر بطريقة YAML. الكتلة الحرفية (|) تحتفظ بفواصل الأسطر، وتظهر بالشكل \n داخل نص JSON. أما الكتلة المطوية (>) فتضم أسطرها بمسافات.
يتيح لك إعداد «المسافة البادئة» مسافتين (الافتراضي)، أو 4 مسافات، أو «مضغوط» الذي يضع كل شيء في سطر واحد لأصغر حجم ممكن.
القيم المنطقية والتواريخ والأرقام تتبع YAML 1.2
تستخدم أدوات YAML القديمة قواعد الإصدار 1.1، حيث تحمل كثير من الكلمات العادية معنى خاصًا. أما هذا المحوّل فيتبع قواعد YAML 1.2 الأحدث، وهي أكثر صرامة وغالبًا ما تكون ما تريده:
- تبقى yes وno وon وoff نصوصًا. فقط true وfalse تصبحان قيمًا منطقية في JSON.
- تبقى التواريخ نصوصًا، فيخرج 2024-01-15 بالشكل "2024-01-15" بدلًا من طابع زمني.
- تصبح الأرقام أرقامًا في JSON، وقد يفاجئك هذا: رقم إصدار بلا علامات تنصيص مثل 1.10 يصبح 1.1، و012 يصبح 12. ضع القيم مثل أرقام الإصدارات والرموز البريدية بين علامات تنصيص لتبقى كما كُتبت تمامًا.
- يُقرأ 0x1F رقمًا ست عشريًا (31).
- كل من ~ وnull والقيمة الفارغة (key:) يصبح null.
- الأعداد الصحيحة الأكبر من نحو 9 كوادريليون تفقد دقتها، كما يحدث في أي مكان في JavaScript.
المراسي ومفاتيح الدمج والمستندات المتعددة
- تُوسَّع المراسي والأسماء المستعارة (&base و*base). يصبح كل اسم مستعار نسخة كاملة من القيمة المرتبطة بالمرساة، لأن JSON لا يدعم المراجع.
- مفاتيح الدمج (<<: *base)، الشائعة في ملفات Docker Compose وCI، لا تُدمج. بل تظهر مفتاحًا حرفيًا اسمه "<<" يحمل القيم المرتبطة بالمرساة، لذا راجع الناتج إن كان ملفك يستخدمها.
- الملف الذي يحتوي على عدة مستندات يفصل بينها --- يصبح مصفوفة JSON فيها إدخال واحد لكل مستند، وهذا يناسب ملفات Kubernetes التي تعرّف عدة موارد. أما المستند الواحد فيصبح كائنًا عاديًا.
- تُحذف التعليقات، لأن JSON لا يستطيع حملها. والملف الذي لا يحتوي إلا على تعليقات ينتج null.
الأخطاء وطريقة إصلاحها
للعودة، تعيد أداة JSON إلى YAML بناء YAML مقروء، مع أن التعليقات والمراسي من الملف الأصلي لا يمكن استعادتها.
- «هذا ليس YAML صالحًا (السطر 4، العمود 3)». تشير الرسالة إلى الموضع الذي توقف عنده التحليل. انظر إلى ذلك السطر والسطر الذي فوقه.
- علامات الجدولة (Tab). لا يسمح YAML إلا بالمسافات للإزاحة، وتُرفض علامة الجدولة. استبدل علامات الجدولة بمسافات في محرّرك.
- المفاتيح المكررة. وجود مفتاحين متطابقين في الخريطة نفسها خطأ هنا، بدلًا من أن يفوز الأخير بصمت.
- الإزاحة غير المتسقة. يجب أن تصطف عناصر القائمة أو الخريطة الواحدة بدقة.
نظرة سريعة
- السعر
- مجاني. بلا تسجيل وبلا علامة مائية.
- الخصوصية
- تُعالَج الملفات في متصفحك ولا تُرفع أبدًا.
- يقبل
- YAML, YML
- ستحصل على
- JSON
- دفعة
- حوّل ملفات كثيرة دفعة واحدة ونزّلها في ملف ZIP
- يعمل على
- Chrome وEdge وFirefox وSafari، على الهواتف والحواسيب
- دون اتصال
- بعد أول تحويل، يواصل العمل دون إنترنت
الأسئلة
هل تُرفع ملفاتي؟
أبدًا. يجري تحويل YAML إلى JSON داخل متصفحك، فتبقى ملفاتك على جهازك.
هل يمكنني تحويل عدة ملفات دفعة واحدة؟
نعم. أضف ما تشاء من الملفات ونزّلها كلها في ملف ZIP واحد.
هل يوجد حد لحجم الملف؟
الملفات التي تبلغ عشرات الميغابايت لا مشكلة فيها على معظم أجهزة الكمبيوتر.
لماذا بقيت «on» أو «yes» نصًا؟
يتبع المحوّل YAML 1.2، حيث لا توجد قيم منطقية سوى true وfalse. غيّر القيمة إلى true أو false إن كنت تقصد قيمة منطقية.
هل يمكنه تحويل ملف يحتوي على عدة موارد Kubernetes؟
نعم. المستندات التي يفصل بينها --- تصبح مصفوفة، فيها إدخال واحد لكل مورد.
هل تُقبل ملفات .yml و.yaml كلاهما؟
نعم. إنهما الصيغة نفسها بامتدادين شائعين.
هل يتحقق من صلاحية ملف YAML؟
نعم. يُرفض YAML غير الصالح مع ذكر السطر والعمود اللذين وُجدت فيهما المشكلة.