KeroTools

تحويل YAML إلى JSON والعكس

حوّل ملفات YAML إلى JSON أو JSON إلى YAML فوراً — أداة مجانية للمطورين.

الإدخال
0 حرف
الناتج

ملفك يبقى على جهازك

لا شيء لحذفه لاحقاً

آمنة لملفات خطوط البناء والأسرار

تعمل في كل متصفح حديث

كيف تعمل

  1. 1

    ألصق YAML أو JSON

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

  2. 2

    اقرأ التحذيرات

    القيم المعاد تصنيفها والتعليقات المفقودة والمفاتيح المكرّرة كلها مسرودة قبل أن تأخذ الناتج.

  3. 3

    انسخ الناتج

    خُذه إلى مستودع، أو متن طلب، أو ملف إعدادات، أو تجهيزة اختبار.

لماذا تستخدم هذه الأداة

الأنواع المخمَّنة مُبرَزة

كل قيمةٍ بلا تنصيص ستقرؤها YAML قيمةً منطقية أو عدداً أو تاريخاً تُعرَض عليك قبل التحويل.

مشكلة النرويج ملتقَطة

الـNO المجرّدة رمزُ دولة أكثر بكثير مما هي كلمة «خطأ»، وتُخبَر أيّهما وقع لك.

الأصفار الأولى تنجو

تحتفظ أرقام الهواتف والرموز البريدية والمعرّفات بالصفر الذي كان تفسيرٌ ثُماني سيلتهمه.

فقد التعليقات مُبلَّغ

لا تعليقات في JSON، فتُخبَر بكم سيختفي منها بدل أن تكتشف ذلك في المراجعة.

المراسي والأسماء المستعارة موضَّحة

تُفَكّ العقد المشتركة في الطريق إلى JSON، ويُعرَض الفكّ فلا يتغيّر شيء من خلف ظهرك.

لا شيء يفارق المتصفح

ملفات خطوط البناء والبيانات التعريفية وكتب اللعب تُحوَّل في هذه الصفحة ولا تُرفَع إلى أي مكان.

YAML تخمّن ما تعنيه قيمك، ولتخمينها ضحايا مشهورون

تطلب منك JSON أن تقول ما هي القيمة: علامات التنصيص تصنع نصّاً، والأرقام المجرّدة تصنع عدداً، ولا التباس في شيء. أما YAML فتستنتج، والاستنتاج أكبر مصدر مفاجأة في الصيغة كلها. وأشهر الحالات له اسم — مشكلة النرويج. اكتب قائمة رموز دول فلا يصل المدخل `NO` نصّاً كما تتوقّع النرويج؛ بل يصل بقواعد YAML 1.1 قيمةً منطقية خاطئة، لأن المواصفة تُدرج `y` و`yes` و`n` و`no` و`on` و`off` و`true` و`false` بكل صور حروفها قيماً منطقية. والقاعدة نفسها تحوّل رمز أونتاريو `ON` إلى «صحيح»، وتحوّل عموداً من إجابات `Y` و`N` إلى قيم منطقية، وتحوّل `NO` في مجموعة بيانات كيميائية إلى «خطأ». ويزيد الأمر سوءاً أن المحلِّلات تختلف: ضيّقت YAML 1.2 القائمة إلى `true` و`false` وحدهما، لكن كثيراً من البرمجيات لا يزال ينفّذ 1.1 أو شيئاً بينهما، فيعني الملف نفسه أشياء مختلفة في بايثون وGo وروبي. والعلاج محرفُ تنصيصٍ واحد، والصعوبة أن تعرف أين تحتاجه. ولهذا وُجدت التحذيرات هنا.

أعداد ليست الأعداد التي كتبتها

الأسرة الثانية من المفاجآت أهدأ من الأولى لأنها تُنتج قيمةً لا خطأً. للصفر الأول معنى في YAML 1.1: فـ`0755` ثُمانية وقيمتها 493، وهذا صواب إن قصدتَ أذونات ملف وخطأ في كل حالة سواها. ورقم هاتف مكتوب `0912345678` يكفّ عن كونه ذلك النصّ، ومعرّفٌ يبدأ بـ`08` أو `09` ليس ثُمانياً صحيحاً أصلاً، فتنقسم المحلِّلات بين رفع خطأ والتراجع إلى نصّ — فيُحمَّل الملف نفسه بسلاسة على جهاز ويفشل على آخر. وأرقام الإصدارات تعاني على نحو آخر: `1.10` عددٌ عشري، والعشري لا يحتفظ بالأصفار اللاحقة، فيعود 1.1 ويصير تثبيت تبعيتك مشيراً إلى إصدار آخر. وفهمت YAML 1.1 أيضاً النظام الستّيني، ولهذا قد تصل `12:30:00` بقيمة 45000 وقد ينقلب عنوان MAC إلى عدد صحيح ضخم. أما القيمة التي تبدو تاريخاً مثل `2026-07-31` فتُحلَّل إلى كائن تاريخ لا إلى نصّ، ولهذا يصل حقل إصدار أو مرجع فاتورة أحياناً طابعاً زمنياً في لغة ونصّاً في أخرى.

الإزاحة نحو، والجدولة ممنوعة، وفحصها بالعين أصعب في العربية

تستخدم YAML الإزاحة للبنية كما تفعل بايثون، لكن بقاعدة لا تملكها بايثون: محارف الجدولة ممنوعة إزاحةً منعاً مطلقاً في كل موضع. وهذا أحد المواضع القليلة التي تتشدّد فيها المواصفة، وهو يُنتج واحدة من أقلّ رسائل الخطأ نفعاً في الأدوات الشائعة، لأن المحرف المخالف غير مرئي. وثمّة بُعدٌ يخصّ العربية تحديداً هنا يستحقّ التصريح: الإزاحة تقع على يسار السطر، والنصّ العربي يُقرأ من اليمين، فبصرك يبدأ من الطرف المقابل للطرف الذي يحمل المعنى النحوي. ومعنى ذلك عملياً أن التحقّق البصري من عمق التعشيش — وهو ما يفعله الجميع تلقائياً في الملفات الإنجليزية — لا يعمل بالكفاءة نفسها في ملف قيمُه عربية، فتمرّ مسافةٌ واحدة زائدة دون انتباه. وثمّة فخّ ثانٍ في النصوص العربية: القيمة العارية لا يجوز أن تحوي نقطتين متبوعتين بمسافة، فسطرٌ مثل `العنوان: الساعة 3: 30` يصير مفتاحاً داخل مفتاح أو خطأ تحليل. والتنصيص يحلّ الاثنين، والتحويل إلى JSON لفحص البنية عادةٌ نافعة فعلاً هنا أكثر من غيرها.

التحويل إلى JSON يفقد أشياء، والتعليقات هي التي ستفتقدها

كثيراً ما تُوصَف YAML بأنها مجموعة شاملة لـJSON، وهذا يكاد يصحّ في البيانات — لكن في البيانات وحدها. فما تضيفه YAML لا ينجو من رحلة الذهاب والإياب. والتعليقات هي الفقد الظاهر والمؤلم: البيان التعريفي لكوبرنيتيس أو خطّ البناء أو كتاب لعب Ansible نصفه شرحٌ عادةً، ورحلةٌ عبر JSON تحذف كل سطر منه بصمت، وهكذا ينتهي مراجعٌ إلى النظر في إعداداتٍ تبخّر مبرّرها. والمراسي والأسماء المستعارة هي الفقد الثاني. تتيح لك YAML تعريف عقدة مرة بـ`&defaults` والإشارة إليها بـ`*defaults`، ودمجها في تخطيطات أخرى بمفتاح الدمج؛ ولا مفهوم كهذا في JSON، فيلزم التحويل أن يفكّ كل إشارة إلى نسخة. ويظلّ المستند يعني الشيء نفسه، لكن التعريف المشترك ذهب، وتعديلٌ لاحق كان مقصوداً به تغيير خمسة مواضع صار يغيّر موضعاً واحداً. وتتيح YAML كذلك عدّة مستندات في تيّار واحد، ومفاتيح ليست نصوصاً — ولا مقابل لأيٍّ منهما في JSON. وهذه الأداة تُبلِّغ عن كل واحدة من هذه بدل أن تفعلها بهدوء.

يمكن أن يُطلَب من محلِّل YAML بناء كائنات، وتلك ثغرة تنفيذ كود

هذه هي الخاصّية الأمنية التي تفصل YAML عن JSON، وتستحقّ قولاً صريحاً لأن الإعدادات الافتراضية كانت خاطئة تاريخياً. تدعم YAML وسوماً تُخبر المحلِّل بالنوع الذي يبنيه، ونفّذت عدّة ارتباطات لغوية ذلك حرفياً: فمستندٌ يحوي `!!python/object/apply:os.system` يأمر مُحمِّلاً ساذجاً باستدعاء تلك الدالّة بالوسائط التي تُمليها أنت. وفي PyYAML كانت الدالّة المسمّاة `load` تفعل ذلك بالضبط سنواتٍ بينما لا تفعله `safe_load`، ومعنى ذلك أن قراءة ملف إعدادات بالدالّة البديهية الاسم كانت تنفيذ كود عن بُعد إن استطاع مهاجم التأثير في الملف. وقد ظهر الصنف نفسه من الثغرات في روبي، وفي جافا عبر SnakeYAML، وفي مُفكِّكات .NET. والدرس يتجاوز YAML: أي صيغة تستطيع وصف الصنف الذي يُنشَأ هي صيغة كودٍ لا صيغة بيانات، والمدخل غير الموثوق يجب أن يمرّ بمُحمِّل محصور في القيم البسيطة والمتتاليات والتخطيطات. وهذه الأداة لا تبني شيئاً البتّة — تحلّل إلى بيانات مجرّدة وتقف.

YAML هي حيث تسكن بيانات الاعتماد، وتلك حجّة التحويل محلياً

انظر ما الذي يُكتَب فعلاً بـYAML تجد حجّة إبقائها على جهازك تُقيم نفسها. إنها صيغة البنية التحتية: خطوط التكامل المستمر، وبيانات كوبرنيتيس التعريفية وأسراره، وقيم Helm، وملفات docker-compose، وكتب لعب Ansible وجرودها، وملفات متغيّرات Terraform، وتعريفات الخدمات. وإعداد التكامل المستمر هو في معظم المستودعات أكثفُ ملفٍ حاضر ببيانات الاعتماد — يسمّي السجلّ وهدف النشر والبيئات، ويشير عادةً إلى الرموز بأسماء المتغيّرات نفسها التي تفتحها. وسرّ كوبرنيتيس مرمَّز بـbase64 لا مشفَّر، ومعنى ذلك أنه نصّ صريح بخطوة إضافية. والناس يمدّون أيديهم إلى محوِّلٍ في اللحظة التي يخفق فيها أحد هذه الملفات ويلزم فحصه، فالمثال في الحافظة هو المثال الحقيقي لا عيّنة محجوبة. وكل ما في هذه الصفحة يجري بـJavaScript في متصفحك ولا يُصدر طلباً؛ افتح لوحة الشبكة في أدوات المطوّر قبل أن تلصق وستراقب العدّاد وهو لا يتحرّك.

أخطاء شائعة يجب تجنّبها

  • ترك رمز دولة أو اختصار بلا تنصيص. بقواعد YAML 1.1 تكون `NO` و`ON` و`Y` و`N` قيماً منطقية، فتصير النرويج «خطأ» وأونتاريو «صحيح».
  • كتابة معرّف بصفر أول. `0755` ثُمانية، ورقم الهاتف يكفّ عن كونه ذلك النصّ، وما يبدأ بـ`08` ليس ثُمانياً صحيحاً أصلاً — فتختلف المحلِّلات فيما تفعله.
  • وضع قيمة عربية عارية فيها نقطتان ثم مسافة. القيمة العارية لا تحتمل ذلك، فتصير مفتاحاً داخل مفتاح أو خطأ تحليل؛ والتنصيص يحلّها.
  • الإزاحة بمحرف جدولة. الجدولات ممنوعة إزاحةً في كل موضع في YAML، ورسالة الخطأ لن تقول لك ذلك لأن المحرف غير مرئي.
  • تحميل YAML غير موثوق بمُحمِّل متساهل. الوسوم تستطيع تسمية صنفٍ يُبنى، وبهذا صارت قراءةُ ملف إعدادات تنفيذَ كود عن بُعد في PyYAML وSnakeYAML.

كيف تُقارن

الجانبهذه الأداةمحوِّلات عبر الويبأداة سطر أوامر
إرسال الملف إلى خادمأبداًغالباً نعملا
تُحذّر من الأنواع المخمَّنةنعملانادراً
تُبلِّغ عن التعليقات التي ستُفقدنعملالا
تكشف المفاتيح المكرّرةنعمنادراًمتغيّر
تبني كائنات من الوسومأبداًمتغيّرحسب المُحمِّل
السعرمجاناًمجاني / خطط مدفوعةمجاناً

المزايا

الاتجاهان معاً

من YAML إلى JSON ومن JSON إلى YAML، والإزاحة وأسلوب التنصيص بيدك.

تحذيرات الإكراه النوعي

كل قيمة مصنَّفة ضمنياً مسرودة بما قرأته YAML وبما قصدتَه أنت على الأرجح.

كشف المفاتيح المكرّرة

المفتاح المكرّر يطمس سابقه بصمت في معظم المحلِّلات، فيُبلَّغ عنه بدل تطبيقه بهدوء.

تيّارات متعدّدة المستندات

تُعالَج المستندات المفصولة بثلاث شرطات وتُحوَّل إلى مصفوفة JSON بدل إسقاطها.

فكّ المراسي والأسماء المستعارة

تُحَلّ العقد المشتركة والمدموجة مع إظهار فكّها، ومنها مفاتيح الدمج.

يستوعب الملفات الكبيرة

يُحوَّل بيانٌ تعريفي طويل أو ملف ترجمة كامل دون رفع ودون سقف حجم.

لا شيء لتثبيته

لا أداة بناء ولا بيئة تشغيل ولا تبعيات — تعمل في صفحة الويب.

جاهزة للعربية وRTL

الواجهة كاملة بثماني لغات، ومنها العربية من اليمين إلى اليسار.

آمنة بالأصل

تُقدَّم عبر HTTPS، بلا تتبّع للمحتوى وبلا رفع إلى طرف ثالث.

من يستخدمها

مهندسو المنصّات وDevOps

معرفة ما يقوله بيانٌ تعريفي فعلاً بعد فكّ مراسيه.

مطوّرو الخوادم

تحويل حمولة JSON إلى ملف إعدادات مقروء، أو العكس.

فرق التوطين

نقل ملفات الترجمة بين إطار عمل يعتمد YAML وآخر يعتمد JSON.

من يطارد عطلاً في خطّ بناء

العثور على القيمة بلا تنصيص التي قرأها المحلِّل قيمةً منطقية.

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

لا. كل شيء يعمل محلياً في متصفحك — نصّك لا يُرفع أو يُخزَّن أو يُشارَك أبداً.

نعم — مجاني تماماً، بلا حساب وبلا حدود.