محوّل JSON إلى YAML
حوّل JSON إلى YAML نظيف وسهل القراءة لـ Kubernetes أو Docker Compose أو GitHub Actions أو Ansible، مع تحكم كامل في المسافات البادئة والنمط وعلامات الاقتباس.
يعمل في متصفحكبدون تسجيللا يُرفع شيء
طريقة استخدام JSON إلى YAML
- الصق JSON في المربع الأيمن أو افتح ملف
.json. - يظهر YAML على اليسار أثناء الكتابة.
- اختر المسافة البادئة (مسافتان أو 4 مسافات) والنمط: block (مفتاح واحد في كل سطر) أو flow (
{a: 1}/[x, y]) بدءًا من مستوى تداخل معيّن. - اختر نمط الاقتباس وفعّل ترتيب المفاتيح إن أردت ترتيبًا أبجديًا.
- انسخ YAML أو نزّله. يُبلَّغ عن JSON غير الصالح مع السطر والعمود والسبب المرجّح.
لماذا تحوّل JSON إلى YAML؟
JSON مثالي للآلات وواجهات API، لكن YAML أسهل على البشر في القراءة والتعديل: بلا أقواس معقوصة، وبلا علامات اقتباس إلزامية، مع دعم التعليقات. تُضبط معظم أدوات البنية التحتية، ومنها Kubernetes وHelm وDocker Compose وGitHub Actions وGitLab CI وAnsible، بصيغة YAML، بينما تكون البيانات التي تبدأ منها (مخرجات API، وkubectl get -o json، وحالة Terraform) بصيغة JSON غالبًا.
نمط block مقابل flow
نمط block يضع كل مفتاح وعنصر قائمة في سطر مستقل، وهو الخيار المعتاد لملفات الإعداد. أما نمط flow فيستخدم {} و[] السطرية، مثل JSON، ويُبقي البنى الطرفية القصيرة مضغوطة. خيار “Flow من المستوى 2” يُبقي المستويين الأعليين بنمط block ويجعل كل ما هو أعمق سطريًا، وهذا مناسب للقوائم الطويلة من الكائنات الصغيرة مثل المنافذ أو متغيرات البيئة.
الاقتباس الآمن
تُقتبس تلقائيًا السلاسل التي قد يُسيء محلّل YAML فهمها: قيم مثل 'no' و'on' و'1.0' و'null'، والسلاسل التي تبدأ بـ * أو &، والسلاسل التي تحتوي على : . اختر مفردة دائمًا أو مزدوجة دائمًا إذا كان دليل الأسلوب لديك يتطلب اقتباس كل سلسلة.
مزالق YAML 1.1 مقابل 1.2
يتبع هذا المحوّل YAML 1.2، المواصفة الحالية. لا تزال كثير من الأدوات القديمة (PyYAML وPsych في Ruby وبعض إصدارات Kubernetes وAnsible) تقرأ YAML 1.1، حيث تختلف القواعد:
- مشكلة النرويج: في YAML 1.1، يعني
country: noالقيمةfalse، فيختفي رمز النرويجNO. والأمر نفسه ينطبق علىyesوonوoffوyوn. أما YAML 1.2 فلا يعتبر قيمًا منطقية سوىtrueوfalse. - الأعداد الثمانية:
0755عدد ثماني في 1.1 لكنه عدد عشري عادي في 1.2، التي تستخدم0o755. اقتبس أذونات الملفات لتكون في أمان. - الأعداد الستينية: في 1.1، قد يُحلَّل
22:30كالعدد 1350. اقتبس الأوقات وتعيينات المنافذ مثل"8080:80".
يقتبس اتجاه JSON → YAML السلاسل الملتبسة ('no' و'on' و'y') تلقائيًا، لذا يُقرأ YAML الناتج بالطريقة نفسها في الإصدارين.
الأسئلة الشائعة
هل التحويل بلا فقدان للبيانات؟
لماذا تُقتبس بعض السلاسل دون غيرها؟
'yes' أو '123' أو السلاسل ذات الأحرف الخاصة. ويُترك كل ما عدا ذلك دون اقتباس لسهولة القراءة.هل يمكنني إضافة تعليقات إلى المخرجات؟
# comments إلى YAML بعد نسخه.