من YAML إلى JSON

يُعد كتابة ملفات YAML يدويًا أكثر سهولة، بينما يُفضل استخدام JSON في الاستخدام البرمجي، وتقبل العديد من الأدوات الحديثة (مثل خطوط إنتاج التحقق المسبق، وكوبيرنيتيس، وأنسيبل) كلا التنسيقيين معًا. عندما تحتاج إلى إدخال بيانات التكوين في أداة تتطلب استخدام JSON فقط، مثل تعريفات بوابات واجهة برمجة التطبيقات، أو قوالب كلاودفورميشن، أو بعض أجسام الويب هوك، فإن هذا المحول يقوم بالتحويل ذهابًا وإيابًا بين التنسيقين. كما تُحوَّل العناصر الأساسية مثل الروابط (Anchors)، والدمج (Merges)، والنوعيات الخاصة بـ YAML (مثل التواريخ، والأرقام الثمانية، وnull و~) إلى صيغ مكافئة في JSON بشكل تلقائي.

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

  1. 1

    لصق ملف YAML

    أي مستند صالح من تنسيق YAML إصدار 1.1 أو 1.2.

  2. 2

    حل روابط الملفات

    تُعرض الرموز الأساسية (`&x`) والرموز البديلة (`*x`) بشكل موسّع داخل نفس السطر، بينما تُسطح مفاتيح الدمج (`<<`).

  3. 3

    تصحيح أنواع البيانات

    تُحوَّل جميع التواريخ والقيم الفارغة والقيم المنطقية إلى نظيراتها في تنسيق JSON.

  4. 4

    نتائج المخرج (JSON)

    سواء كان مطبوعًا بدقة عالية أو مصغَّرًا، حسب اختيارك.

مثال على عملية التحويل

YAML:

defaults: &defaults
  timeout: 30
  retries: 3

production:
  <<: *defaults
  host: prod.example.com
  debug: false

staging:
  <<: *defaults
  host: staging.example.com
  debug: true

JSON (تم حل الروابط فيه):

{
  "defaults": {
    "timeout": 30,
    "retries": 3
  },
  "production": {
    "timeout": 30,
    "retries": 3,
    "host": "prod.example.com",
    "debug": false
  },
  "staging": {
    "timeout": 30,
    "retries": 3,
    "host": "staging.example.com",
    "debug": true
  }
}

تعيين الأنواع

YAML JSON
سلسلة نصية سلسلة نصية
عدد صحيح رقم
عدد عشري رقم
قيمة منطقية (true، false) قيمة منطقية
فارغ (null، ~، خالٍ) null
طابع زمني سلسلة ISO 8601
تسلسل (قائمة) مصفوفة
تعيين كائن

جوانب خاصة بـ YAML لا يمكن لتنسيق JSON تمثيلها

  • التعليقات: لا يحتوي تنسيق JSON على صيغة قياسية للتعليقات؛ وبالتالي تُستبعد التعليقات تلقائيًا.
  • تيارات المستندات المتعددة (باستخدام علامات الفصل ---): يحتوي ملف JSON على مستند واحد لكل ملف؛ أما عند وجود عدة مستندات، فإن المحول يُنتج مصفوفة من هذه المستندات.
  • المرجعيات والأسماء البديلة: تم حلها وتكرارها داخل السطر نفسه.
  • المفاتيح المعقدة (مفاتيح التعيين غير النصية): يجب أن تكون مفاتيح JSON نصوصًا؛ وتُحوَّل المفاتيح المعقدة إلى نصوص.

فخ الإصدار 1.1 مقابل الإصدار 1.2

  • يقوم YAML 1.1 بتحليل القيم yes، no، on، off، y، وn على أنها قيم منطقية (bool values)، بينما يتم تحويل القيمة NO تلقائيًا إلى رمز دولة وهو false دون إشعار.
  • يقتصر تنسيق YAML 1.2 على القيم المنطقية من نوعين فقط هما true وfalse؛ وهو أكثر أمانًا، لكن العديد من أدوات تحليل البيانات (بما في ذلك الإعداد الافتراضي في PyYAML) ما زالت تستخدم الإصدار 1.1.

يعتمد المحول بشكل افتراضي على دلالات الإصدار 1.2، ويُصدر تنبيهًا عندما يكون استخدام الإصدار 1.1 سيؤدي إلى تغيير النتيجة.

رحلة ذهاب وإياب من JSON إلى YAML

عادةً ما يكون التحويل من JSON إلى YAML خاليًا من فقدان البيانات (حيث يُعد JSON مجموعة فرعية من صيغة YAML 1.2)، بينما يكون التحويل العكسي من YAML إلى JSON مع خسارة بيانات؛ إذ تختفي التعليقات وهيكل مفتاح الدمج. إذا كنت تخطط لإجراء هذا التحوّل ذهابًا وإيابًا، فيجب الحفاظ على النسخة الأصلية من YAML ضمن نظام التحكم بالنسخ.

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

لا، لهذه العناصر قوالب خاصة تُنفَّذ قبل تحليل ملف YAML؛ قم أولًا بعرض القالب (باستخدام kustomize build أو helm template)، ثم أدخل الناتج هنا.

تصبح تواريخ التوقيت في YAML عبارة عن سلاسل نصية وفق معيار ISO 8601 في تنسيق JSON؛ فمثلاً، يصبح 2026-04-18 هو "2026-04-18". كما يتم الحفاظ على تواريخ الوقت والمناطق الزمنية دون تغيير.

الحد العملي في المتصفح يبلغ حوالي 10 ميغابايت؛ ولملفات أكبر حجمًا، استخدم yq أو python -c "import yaml, json; print(json.dumps(yaml.safe_load(open(file))))" في سطر الأوامر.

لا: عملية التحويل تتم مباشرةً في متصفحك دون إرسال أي بيانات.

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

عدّاد FPS

قِس معدل الإطارات FPS في المتصفح عبر requestAnimationFrame: تنعيم، وأدنى وأقصى معدل إطارات، وحد تنبيه، ورسم بياني اختياري. يعمل محليًا بلا رفع ملفات وبلا API.

أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator)

إزالة التشفير من كود جافا سكريبت مُصغَّر أو مُعبَّأ باستخدام إعادة تسمية المتغيرات، وفك ترميز السلاسل النصية ومصفوفات البيانات، بالإضافة إلى عكس تسطيح تدفق التحكم وتحسين هيكله.

مرجع اختصارات لوحة المفاتيح

ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.

مولد تراخيص

قم بإنشاء النص الكامل لترخيصات المصدر المفتوح مع إدخال اسمك والسنة المقابلة، ويشمل ذلك تراخيص MIT وApache 2.0 وGPLv3 وBSD-3 وMPL-2.0 وCC.

الأداة متاحة بلغات أخرى