← جميع الأدوات

محوّل JSON إلى YAML

حوّل JSON إلى YAML وYAML إلى JSON فوراً في متصفحك. محلي بالكامل وخاص، مع ملاحظات حول التعليقات والأنواع والمسافات البادئة والمراسي.

حوّل JSON إلى YAML وYAML إلى JSON داخل متصفحك

تصف JSON وYAML النوع نفسه من البيانات — خرائط متداخلة وقوائم وسلاسل وأرقام وقيم منطقية — لكنهما تبدوان مختلفتين جدًا وتُستخدمان في أماكن مختلفة. إن قضيت أي وقت قرب واجهات البرمجة أو ملفات الحاويات أو خطوط التكامل المستمر، فستحتاج في النهاية إلى تحويل إحداهما إلى الأخرى. تؤدي هذه الصفحة ذلك التحويل في الاتجاهين، بالكامل داخل متصفحك، فالبيانات التي تلصقها لا تغادر جهازك أبدًا.

أقواس ضوء مجردة تتحول إلى طبقات إعداد نظيفة مبنية على الإزاحة على خلفية نيلية داكنة
بنية JSON تنفتح إلى YAML قائمة على الإزاحة.

ما هي JSON وأين تعيش

JSON (ترميز كائنات جافاسكربت) صيغة صارمة قائمة على الأقواس والمعقوفات، مبنية للآلات أولًا. كل كائن مُغلَّف بـ{}، وكل مصفوفة بـ[]، والمفاتيح وقيم السلاسل بين علامتي اقتباس مزدوجتين، والعناصر تفصلها فواصل. إنها الصيغة الافتراضية على السلك لواجهات REST وGraphQL، وجسم معظم خطافات الويب، وشكل مستندات NoSQL، وما يعيده استدعاء fetch لديك. وتحلّلها كل لغة تقريبًا جاهزةً، وهذا بالضبط لماذا فازت بطبقة الواجهات: JSON.parse في جافاسكربت، وjson في مكتبة بايثون القياسية، ونظائر في كل مكان آخر. والمقايضة أن JSON مطوّلة في الكتابة باليد وتمنع التعليقات، فهي صيغة سيئة لملف يحرّره إنسان طوال اليوم.

ما هي YAML وأين تعيش

صُمِّمت YAML (وتعني «YAML ليست لغة ترميز») للأولوية المعاكسة: البشر أولًا. تُسقط المعقوفات وعلامات الاقتباس، وتستخدم الإزاحة للتعبير عن التداخل، وتتيح لك كتابة تعليقات بـ#. تلك القابلية للقراءة هي سبب صيرورتها اللغة المشتركة للإعداد. فملفات Docker Compose، وبيانات Kubernetes، وسير عمل GitHub Actions وGitLab CI، ومسرحيات Ansible، وعدد لا يُحصى من ملفات إعداد التطبيقات كلها YAML. ومستند YAML النموذجي أقصر بوضوح من نظيره بـJSON وأسهل بكثير في المقارنة داخل طلب الدمج. وثمن تلك الأناقة هو الهشاشة، وهنا يصبح التحويل مثيرًا للاهتمام.

الفروق الجوهرية التي تهم

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

شجرة بيانات متداخلة تتحول بين صيغتين منظّمتين متوهجتين بالسماوي والذهبي
شجرة البيانات نفسها معبَّر عنها بصيغتين.

مطبّات التحويل التي يجب الانتباه لها

رحلة الذهاب والإياب ليست دائمًا بلا فقد، ويفيد معرفة أين تنكسر الأمور:

  • مشكلة النرويج. بموجب قواعد YAML 1.1، يُحلَّل NO غير المقتبَس كقيمة منطقية false، وتصبح yes وon وoff قيمًا منطقية أيضًا. فقد ينقلب رمز بلد أو عنوان مفتاح إلى true/false قبل أن تلاحظ. اقتبس القيم التي تقصدها سلاسل.
  • قسر الأرقام. قد يفقد إصدار مثل 3.10 صفره الأخير ويصبح 3.1، وتصبح 1.0 رقمًا حتى حين أردتها نصًا. اقتبس سلاسل الإصدارات والمعرّفات.
  • المراسي والأسماء البديلة تتلاشى. مراجع YAML &anchor و*alias ليس لها نظير في JSON. والمحوّل الجيد يوسّعها إلى قيمتها الكاملة، فالبيانات صحيحة لكن إزالة التكرار ذهبت — ورحلة JSON إلى YAML إلى JSON لن تعيد بناء المراسي الأصلية.
  • التعليقات وقيم الكتل النصية. تُسقَط التعليقات عند الانتقال إلى JSON. وتنهار قيم الكتل النصية متعددة الأسطر (| و>) إلى سلاسل JSON عادية بهروب \n، فتُفقَد نية التنسيق البصري.
  • الإزاحة عند العودة إلى YAML. لا تُرمّز JSON الإزاحة، فيختار المحوّل نمطًا متّسقًا. راجِعه قبل اللصق في أداة حساسة لعلامات الجدولة.

لماذا يهم المحلي فقط

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

تحتاج إلى أدوات ذات صلة؟ تصفّح المجموعة الكاملة من محوّلات البيانات، ونظّف المدخلات الفوضوية بـمنسّق JSON، وعُد إلى هنا كلما احتجت إلى التنقّل بين عالم واجهات البرمجة وعالم الإعداد.

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

هل تُرفع بياناتي إلى أي مكان؟

لا. يجري التحويل بالكامل في متصفحك باستخدام جافاسكربت محلي. لا تُرسَل JSON أو YAML الخاصة بك إلى خادم أبدًا، فتبقى الأسرار وملفات الإعداد خاصة.

لماذا تغيّرت قيمة YAML بين true أو false بشكل غير متوقع؟

تعامل YAML 1.1 الكلمات غير المقتبَسة مثل yes وno وon وoff كقيم منطقية — وهي مشكلة النرويج. غلّف أي قيمة تقصدها سلسلة بعلامات اقتباس كي تنجو من التحويل كنص.

ماذا يحدث لتعليقاتي حين أحوّل YAML إلى JSON؟

ليس لـJSON صياغة تعليقات، فتُجرَّد كل تعليقات المربّع أثناء التحويل. إن احتجت إلى حفظ الملاحظات، فاحتفظ بنسختك المرجعية في YAML.

هل تُحفظ مراسي YAML وأسماؤها البديلة؟

تُوسَّع إلى قيمها الكاملة لأن JSON لا تملك آلية مراجع. تبقى البيانات صحيحة، لكن إزالة التكرار لا يمكن استعادتها حين تحوّل عودةً إلى YAML.

هل يمكنني تحويل JSON إلى YAML كما YAML إلى JSON؟

نعم، تعمل الأداة في الاتجاهين. الصق JSON لتحصل على YAML، أو الصق YAML لتحصل على JSON، ويكتشف المحوّل الصيغة الأخرى ويُصدِرها.

لماذا تنكسر YAML حين أستخدم علامات الجدولة؟

تتطلب YAML المسافات للإزاحة وترفض علامات الجدولة. إن فشل اللصق في التحليل، فاستبدل أحرف الجدولة بمسافات وأبقِ الإزاحة متّسقة.