كيفية استخدام محوّل YAML إلى JSON
- الصق محتوى YAML.
- اختر المسافة البادئة وطريقة التعامل مع المستندات المتعددة.
- انسخ JSON أو نزّله.
مزايا محوّل YAML إلى JSON
- تحليل YAML 1.2 مع المراسي (anchors) والأسماء المستعارة (aliases) ومفاتيح الدمج والقيم الكتلية
- دمج التدفقات متعددة المستندات في مصفوفة واحدة أو الاحتفاظ بالمستند الأول
- الإبلاغ عن الأخطاء مع رقم السطر والعمود ومقتطف من النص
- تحويل التواريخ والبيانات الثنائية إلى سلاسل نصية آمنة في JSON
- رفض المفاتيح المكررة بدلاً من استبدالها بصمت
- اختيار المسافة البادئة أو الإخراج المصغّر
مثال على محوّل YAML إلى JSON
تحويل تعريف مهمة CI
الإدخال:
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm testالنتيجة:
{
"jobs": {
"test": {
"runs-on": "ubuntu-latest",
"steps": [
{ "run": "npm test" }
]
}
}
}الأسئلة الشائعة حول محوّل YAML إلى JSON
هل المراسي والأسماء المستعارة ومفاتيح الدمج مدعومة؟
نعم. تُحلّ المراسي (&name) والأسماء المستعارة (*name) إلى قيم عادية في ناتج JSON، لذا لا يحتوي الناتج على أي مراجع.
ماذا يحدث مع المستندات المتعددة (---)؟
افتراضياً تُدمج جميع المستندات في التدفق في مصفوفة JSON واحدة. ويمكنك أيضاً اختيار تحويل المستند الأول فقط.
كيف تُحوَّل التواريخ والقيم الثنائية؟
لا يوجد في JSON نوع للتاريخ أو للبيانات الثنائية، لذا تصبح الطوابع الزمنية سلاسل نصية بصيغة ISO 8601، وتصبح قيم !!binary سلاسل نصية بترميز base64.
لماذا يفشل تحليل YAML الخاص بي؟
الأسباب الأكثر شيوعاً هي استخدام علامات الجدولة للمسافة البادئة، أو عدم اتساق المسافة البادئة، أو غياب المسافة بعد النقطتين، أو المفاتيح المكررة. ويذكر الخطأ رقم السطر والعمود.
ملاحظات تقنية
يستدعي التحليل الدالة parseAllDocuments من حزمة yaml في الوضع الصارم مع تفعيل uniqueKeys وmerge: فالمفاتيح المكررة والإزاحة بعلامات الجدولة (tab) أخطاء قاطعة يُبلَّغ عنها بالسطر والعمود ومقتطف مرقّم، وتُوسَّع مفاتيح الدمج <<، وتتحوّل الوسوم غير المحلولة مثل !foo إلى تحذيرات مع الإبقاء على القيمة كسلسلة نصية. والمخطط الافتراضي هو YAML 1.2 الأساسي، لذا تبقى yes/no/on/off سلاسل نصية وتُقرأ 010 على أنها 10 عشرياً؛ ويبدّل التوجيه %YAML 1.1 المخطط فيغيّر الأمرين معاً.
قبل JSON.stringify تُطبَّع القيمة إلى أنواع آمنة في JSON: يصبح !!timestamp سلسلة ISO 8601، و!!binary سلسلة base64، و!!set تسلسلاً، و!!omap خريطة، وتتحوّل .inf و.nan إلى السلسلتين ".inf" و".nan" بدلاً من null. وتُحوَّل المفاتيح غير النصية إلى نصوص (فيصبح المفتاح null هو ""). ويُحدّ توسيع الأسماء المستعارة بـ 1000 لكل مستند لصدّ حمولات «billion laughs»، وتفقد الأعداد الصحيحة التي تتجاوز 2^53 − 1 دقتها لأن تحليل bigint غير مفعّل.