YAML إلى JSON

حوّل YAML إلى صيغة JSON

نبذة عن YAML إلى JSON

تحلل أداة «YAML إلى JSON» نص YAML الملصق باستخدام js-yaml وفق قواعد YAML 1.2 للقيم المنطقية وnull، ثم تكتب JSON بمسافة بادئة من مسافتين. تصبح التعيينات كائنات، وتصبح القوائم التي تسبق عناصرها علامة - مصفوفات؛ وتوسع المراسي والأسماء المستعارة وتطبق مفاتيح الدمج؛ وتصبح عدة مستندات مفصولة بعلامة --- مصفوفة JSON واحدة. لا تعد قيما منطقية إلا true وfalse، لذا تبقى yes وno سلاسل نصية، وتبقى التواريخ نصا. تحتفظ الأعداد الصحيحة بكل أرقامها، لكن الأعداد العشرية تصبح أرقاما في JSON: فالقيمة 1.10 غير المقتبسة تكتب 1.1. الوسوم المخصصة مثل !Ref غير مدعومة. تجري js-yaml كل ذلك داخل علامة تبويب متصفحك.

مثال

ملف إعدادات فيه مرساة ومفتاح دمج ورقم إصدار بلا علامات اقتباس وآخر بين علامتي اقتباس، ونص JSON الذي تعيده الأداة:

YAML

defaults: &base
  retries: 3
  debug: no
prod:
  <<: *base
  host: example.com
  version: 1.10
  tag: "1.10"
  build: 0012

JSON

{
  "defaults": {
    "retries": 3,
    "debug": "no"
  },
  "prod": {
    "retries": 3,
    "debug": "no",
    "host": "example.com",
    "version": 1.1,
    "tag": "1.10",
    "build": 12
  }
}

كيفية تحويل YAML إلى JSON

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

الصيغ والحدود

الإدخال
نص YAML، مستند واحد أو أكثر
الإخراج
JSON (مسافة بادئة من مسافتين)، يحفظ باسم data.json
غير مدعوم
الوسوم المخصصة (!Ref و!Sub) و!!binary و!!timestamp
القيم المرفوضة
القيمتان ‎.inf و‎.nan، لأن JSON لا يمكنه احتواؤهما

استخدامات شائعة

قراءة ملفات بيان Kubernetes في برنامج نصي
يصبح ملف البيان الذي يضم Deployment وService وIngress مفصولة بعلامة --- مصفوفة JSON واحدة فيها عنصر لكل مورد، جاهزة لأداة jq أو لبرنامج نصي لا يقرأ إلا JSON.
معرفة ما يضبطه ملف Compose فعلا
تحويل ملف docker-compose.yml يعيد استخدام &defaults عبر <<: *defaults يكتب كل خدمة مع المفاتيح المدمجة مكتوبة صراحة، فتقرأ مباشرة البيئة والمنافذ وسياسة إعادة التشغيل النهائية لكل خدمة.
نقل إعدادات إلى أداة لا تقبل إلا JSON
يصبح وصف OpenAPI أو مسار عمل CI مكتوب بلغة YAML نص JSON لأداة تحقق أو عميل REST أو مكتبة لا تقبل إلا JSON، مع الاحتفاظ بالأعداد الصحيحة الطويلة رقما رقما.

أي أداة تختار

  • JSON إلى YAML: الاتجاه المعاكس؛ تضع السلاسل النصية مثل yes و123 أو التاريخ بين علامتي اقتباس مفردتين حتى يبقيها قارئ YAML نصا.
  • TOML إلى JSON: لملفات Cargo.toml وpyproject.toml؛ تكتب تواريخ TOML سلاسل نصية وفق معيار ISO 8601 وتحول inf وnan إلى null مع تنبيه، بينما ترفض هذه الأداة ‎.inf و‎.nan.
  • منسق JSON: لترتيب مفاتيح النتيجة من A إلى Z، أو التبديل إلى 4 مسافات أو علامة جدولة، أو تصغيره، لأن هذه الأداة تكتب JSON دائما بمسافة بادئة من مسافتين.

المكان الذي تتم فيه معالجة ملفك

تعمل js-yaml في متصفحك لقراءة YAML، ولا يرفع المحتوى الذي تلصقه، لذا تبقى لديك ملفات الإعدادات التي تحوي أسماء مضيفين داخلية. إذا حدث خطأ، ترسل رسالته إلى سجل الأخطاء لدينا بعد حذف المقاطع المقتبسة منها، مع اسم الأداة واسم متصفحك وإصداره.

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

هل يبقى رقم إصدار مثل 1.10 كما هو؟

لا، إلا إذا كان بين علامتي اقتباس. فبلا علامات اقتباس تكون 1.10 رقما في YAML وتكتب 1.1 في JSON؛ وبين علامتي اقتباس تبقى السلسلة النصية 1.10، كما في المثال. وبالطريقة نفسها تصبح 0012 القيمة 12.

هل تحول yes وno إلى قيم منطقية؟

لا. وفق YAML 1.2، الذي تتبعه هذه الأداة، لا تعد قيما منطقية إلا true وfalse (وتحسب True وTRUE أيضا)، لذا تبقى yes وno وon وoff سلاسل نصية. اكتب true أو false إذا كنت تحتاج إلى قيم منطقية.

هل تدعم الأداة المراسي ومفاتيح الدمج؟

نعم. ينسخ الاسم المستعار مثل *base القيمة التي تحمل المرساة، ويدمج <<: *base مفاتيحها في التعيين، كما تستخدمه ملفات Docker Compose وGitLab CI؛ والمفاتيح المكتوبة بجانب الدمج هي التي تغلب.

هل يمكنني تحويل قالب CloudFormation؟

لا، إذا كان يستخدم الوسوم القصيرة. توقف !Ref و!Sub وغيرها من الوسوم المخصصة التحويل بخطأ وسم غير معروف، وكذلك !!binary و!!timestamp. أما القوالب المكتوبة بالشكل الطويل، مثل Ref: MyBucket، فتحول بشكل عادي.

هل تبقى تعليقات YAML؟

لا. لا يحوي JSON تعليقات، لذا يحذف كل تعليق #، سواء كان في سطر مستقل أو بعد قيمة.

ماذا يحدث عندما يظهر مفتاح مرتين في التعيين نفسه؟

يتوقف التحويل بخطأ مفتاح مكرر في التعيين، مع رقم السطر والعمود، بدلا من الاحتفاظ بإحدى القيمتين دون تنبيه. احذف أحد المفتاحين أو غيّر اسمه، ثم حوّل من جديد.

لماذا يظهر لي خطأ عن أحرف الجدولة؟

لا يسمح YAML بأحرف الجدولة في المسافة البادئة. ضع مسافات مكانها؛ ويذكر الخطأ السطر والعمود لأول حرف جدولة يعثر عليه.

كيف تحول السلاسل النصية متعددة الأسطر | و>؟

تحتفظ الكتلة | بفواصل الأسطر، وتجمع الكتلة > أسطرها بمسافات؛ وتصبح كلتاهما سلسلة نصية واحدة في JSON تنتهي بفاصل أسطر واحد، مثل line one line two .

إلام تتحول القيمة الفارغة و~؟

إلى null. المفتاح الذي لا شيء بعد نقطتيه، و~ وnull، كلها تعطي null في JSON، والمستند الذي لا يحوي إلا تعليقات يتحول أيضا إلى null.