YamlBox

أدوات يامل · 50دقيقة قراءة

JSON إلى YAML: جعل مخرجات الجهاز قابلة للقراءة مرة أخرى

JSON ممتاز على السلك وغير سار في طلب السحب. عندما تصبح استجابة واجهة برمجة التطبيقات (API)، أو جزء حالة Terraform، أو بيان الحزمة شيئًا يراجعه الإنسان سطرًا تلو الآخر، فإن تحويل JSON إلى YAML هو الإجابة المعتادة - وتفاصيل كيفية تحديد اقتباسات التحويل والمسافات البادئة ما إذا كانت النتيجة ستظل قابلة للقراءة بعد ستة أشهر.

تم التحديث

لماذا تحويل JSON إلى YAML على الإطلاق

يحتوي التنسيقان على بيانات متطابقة، لكنهما يعملان على تحسين القراء المختلفين. يستخدم JSON الأحرف على الأقواس والفواصل وعلامات الاقتباس؛ تنفقها YAML على البنية التي يمكن للعين أن تتبعها كمسافة بادئة. بالنسبة للبيانات التي يتم إنشاؤها واستهلاكها بواسطة البرامج، يفوز JSON. بالنسبة للبيانات التي يحررها شخص ما - قيم Helm، وتعريفات CI، وقوائم الجرد Ansible، وملفات Docker Compose - يفوز YAML، ولهذا السبب يظهر هذا الاتجاه عندما تحتاج البيانات التي تم إنشاؤها إلى مالك بشري.

التعليقات هي الشيء الوحيد الذي لا يمكن البقاء على قيد الحياة

يمكن للتحويل استعادة إمكانية القراءة ولكن لا يمكنه استعادة النية: المصدر JSON ليس لديه أي تعليقات لترحيلها. إذا كان سيتم الحفاظ على الملف الذي تم إنشاؤه YAML بواسطة الأشخاص، أضف تعليقًا قصيرًا في الرأس يصف مصدره وما الذي يعيد إنشائه، بحيث لا يقوم أحد بتحرير الملف الذي سيتم الكتابة فوقه في عملية النشر التالية.

اقتباس: حيث تم تحويل YAML فواصل بهدوء

يتعامل YAML مع العديد من الكلمات المجردة كقيم بدلاً من سلاسل. يمكن للمحول الذي يسقط علامات الاقتباس بقوة أن يغير الأنواع دون تغيير حرف واحد مرئي:

                country: NO        # parses as boolean false in YAML 1.1
version: 1.10      # parses as the number 1.1
time: 22:30        # parses as a sexagesimal integer
name: "on"         # quoted on purpose — must stay a string
              

تقتبس المخرجات الجيدة أي سلسلة يمكن أن تتم قراءتها بشكل خاطئ - `yes`/`no`/`on`/`off`، معرفات ذات مظهر رقمي، قيم ذات أصفار بادئة، أوقات وتواريخ - بدلاً من اقتباس كل شيء، مما ينتج عنه جدار علامات الترقيم الذي كنت تحاول الهروب منه.

المسافة البادئة والسلاسل المتعددة الأسطر

المسافتان هما الإعداد الافتراضي الآمن: هذا ما تفترضه وثائق Kubernetes وقوالب Helm ومعظم المحررين، ويظل قائمًا بعد النسخ واللصق بين الأدوات. من الصعب مسح التداخل العميق بأسلوب المساحات الأربعة بعد ستة مستويات تقريبًا. السلاسل الطويلة هي قرار التنسيق الآخر - يمكن أن تظهر قيمة JSON مع الأسطر الجديدة المضمنة كخط واحد مُفلت أو ككتلة YAML عددية تُقرأ بشكل طبيعي. إذا كان الحقل عبارة عن برنامج نصي لـ Shell أو مقتطف تكوين، فاطلب نموذج الكتلة.

مفاتيح الفرز تجعل الاختلافات ذات معنى

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

احتفظ بالرحلة ذهابًا وإيابًا في مكان واحد

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

JSON إلى YAML — الأسئلة المتداولة

هل سيحتفظ المحول YAML بطلب المفتاح الخاص بي؟

يمكن للمحولات فرز المفاتيح أو الحفاظ على ترتيب الإدراج. عادةً ما يكون الفرز هو الخيار الأفضل للملفات التي يتم تتبعها في git لأن إعادة الإنشاء تنتج اختلافات مستقرة وبسيطة؛ الحفاظ على الترتيب الأصلي عندما يكون الترتيب نفسه ذا معنى للقراء.

لماذا تم تغيير نوع القيمة بعد تحويل JSON إلى YAML؟

تتم إعادة تفسير الكميات العارية في YAML: يمكن أن تصبح `no` و`on` و`off` قيمًا منطقية، ويمكن أن تصبح القيم مثل `1.10` أرقامًا. يقتبس المحول الآمن السلاسل التي قد يتم إساءة قراءتها. إذا كان الحقل يجب أن يظل سلسلة، فاقتبسه بشكل صريح في YAML.

هل يمكنني تحويل JSON إلى YAML دون الاتصال بالإنترنت؟

نعم - التحويل عبارة عن تحليل محلي وإعادة تسلسل دون الحاجة إلى خادم، لذلك تستمر الأداة في العمل مع قطع الشبكة ولا تترك بياناتك علامة تبويب المتصفح أبدًا.

الأدوات المذكورة في هذه التدوينة

تصفح القائمة الكاملة للأدوات 19

المزيد من المقالات للقراءة

60دقيقة قراءة

منسق JSON: جميل ومصغر وصالح بالفعل

منسق JSON يقوم بالطباعة الجميلة والتصغير والتحقق من صحة مواقع الأخطاء الدقيقة - بالإضافة إلى الأخطاء النحوية الخمسة وراء كل خطأ JSON غير صالح تقريبًا.

جميع المشاركات 19 →