العربية

أدوات المطور · محولات بناء الجملة

تمت مقارنة أربعة نماذج بيانات: لماذا JSON، YAML، TOML و XML لا يتم تعيين 1 مطلقًا:1

· خلفية

تنسيقات البيانات json yaml

أربعة أشكال مختلفة لنماذج البيانات تجتمع في مركز تحويل مقيد
الرسم التوضيحي المتجه الأصلي ToolAcre

كل تحويل بين هذه التنسيقات يكون مفقودًا في مكان ما، لأن كل منها تم تصميمه حول نموذج بيانات مختلف. يقارن هذا المنشور أنظمة الأنواع والهياكل الخاصة بها حتى تتمكن من التنبؤ بما سيحتفظ به التحويل وما سينخفض.

التكوين الذي لن يكون ذهابًا وإيابًا - ملف تم تحويله من خلال ثلاثة تنسيقات والحقول التي عادت مختلفة

يمكن للكائن العادي الذي يحتوي على أرقام آمنة وسلاسل وقيم منطقية ومصفوفات وكائنات متداخلة أن ينجو من اختبارات JSON-to-YAML-to-JSON وJSON-to-TOML-to-JSON. أضف قيمة فارغة قبل TOML، وتاريخ ووقت من TOML، ​​ومحتوى XML المختلط أو تعليق YAML، وتغيير بعض القيمة أو معلومات المصدر.

السؤال المفيد ليس ما إذا كان التحويل خاسرًا عالميًا. إنها فئة الإدخال والاتجاه الذي يحافظ على الخصائص التي تحتاجها. إن تحذيرات ورفضات ToolAcre تجعل هذه المصفوفة قابلة للملاحظة بدلاً من اختصار كل زوج إلى وعد تسويقي واحد.

يمكن للتكوين التمثيلي أن يتنقل ذهابًا وإيابًا عبر بعض الأزواج، ولكن ليس كل الأشكال المدعومة

يوفر JSON قيمة فارغة ومنطقية وأرقام وسلاسل ومصفوفات وكائنات في هذا المحلل اللغوي. لا يحتوي على تعليقات، أو نوع التاريخ والوقت، أو بناء جملة المرجع المشترك. JavaScript يوزع الأرقام عندما يتضاعف IEEE-754، لذا فإن العدد الصحيح غير المقتبس بالفعل والذي يقع خارج النطاق الآمن قد يفقد الدقة قبل أن يراه كاتب آخر.

مفاتيح الكائنات عبارة عن سلاسل، ويؤدي الفرز الاختياري إلى تغيير طريقة عرضها. تظل المصفوفات مرتبة. يرفض التحليل الصارم التعليقات والفواصل اللاحقة والرموز الرقمية غير المحدودة، مما يؤدي إلى إنشاء خط أساس مدمج للقراء الآخرين.

نموذج قيمة JSON كما هو مستخدم في تنفيذ JavaScript هذا

ToolAcre يقبل YAML من خلال JSON أو المخططات الأساسية. يتم حل المراسي والأسماء المستعارة، وتختفي التعليقات، وتصبح التدفقات مصفوفات، وتحتفظ المفاتيح المكررة بالقيمة الأخيرة مع تحذير، ويتم رفض الأسماء المستعارة العودية أو المتفجرة.

يتم رفض العلامات المخصصة والثنائية والطابع الزمني والمجموعة ومنشئات كائنات اللغة. يصبح Core Infinity وNaN فارغين في التنسيقات المستهدفة مع وجود تحذيرات. يعد هذا عن قصد مجموعة فرعية من نظام العلامات الأوسع لـ YAML، وليس مطالبة بالدعم الكامل لكائن YAML.

يقبل النموذج YAML المقيد ToolAcre

TOML يبدأ بجدول ويدعم السلاسل والأعداد الصحيحة الموقعة والعوامات والقيم المنطقية والمصفوفات والجداول وأربعة أنواع زمنية. ليس لديها فارغة. ToolAcre يحول التواريخ والأوقات إلى سلاسل موجهة نحو المصدر والأعداد الصحيحة العريضة إلى سلاسل عشرية بدلاً من فقدان الأرقام.

عند كتابة TOML، يتم حذف مفاتيح الكائنات الفارغة وتصبح إدخالات المصفوفة الفارغة سلاسل فارغة. تم رفض المصفوفات الجذرية والعددية. لا يتم إرجاع التعليقات واختيار المؤلف بين الرؤوس والمفاتيح المنقطة والجداول المضمنة من خلال قيمة واضحة.

الجدول الجذر لـ TOML والقيم الزمنية والحدود الخالية

يتم عرض XML كشجرة ذات سمات `@`، ومفاتيح فرعية عادية، `#text`، `#cdata`، ومصفوفات شقيقة متكررة وبادئات مساحة الاسم الحرفية. يتم إسقاط التعليقات والإقرار وتعليمات المعالجة. يتم فقدان موضع النص المختلط، ولا يمكن معرفة واحد مقابل كثير قبل ظهور التكرارات.

تتم قراءة القيم كسلاسل ما لم يتم تحديد الاستدلال. تصبح القيمة الفارغة المكتوبة من JSON عنصرًا فارغًا ولا يمكن تمييزها عن السلسلة الفارغة عند العودة. يتم رفض كل DOCTYPE، وتتوقف الأسماء غير الصالحة عن التسلسل بدلاً من إعادة كتابتها.

إسقاط ToolAcre XML: العناصر والسمات والنص والبادئات الحرفية

السفينة ذات الاتجاهات التسعة: JSON إلى YAML، XML، TOML وCSV؛ YAML إلى JSON وTOML؛ TOML إلى JSON وYAML؛ XML إلى JSON. تكون القيم العادية ذات الشكل JSON أفضل ما يكون بين JSON وYAML. TOML يقدم التاريخ والحدود الفارغة. يتطلب XML اصطلاحات التسمية وفئة العقد.

CSV هو قيمة خارجية مسطحة ومخرجات فقط. تصبح المصفوفات أو الكائنات المحددة صفوفًا، وتتسطح المسارات المتداخلة في أعمدة منقطة، ويتم دمج القيم الخالية مع النص الفارغ ويتم تحييد السلاسل المشابهة للصيغة. يتم رفض CSV-to-JSON، وXML-to-TOML والأزواج الغائبة الأخرى بدلاً من استنتاجها.

مصفوفة التوافق للاتجاهات التسعة المشحونة، مع CSV فقط كمخرج

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

كما أن تحويل بناء الجملة لا يثبت صلاحية التطبيق. لا يزال من الممكن أن تنتهك رسالة الطلب النظيفة على شكل YAML أو XML أو ملف المشروع TOML العقد المستهدف. استخدم مدقق المجال بعد فحص تعيين بناء الجملة.

الخلاصة: اختر النموذج، ثم بناء الجملة - وكيف تتيح لك لوحة محولات Syntax اختبار التحويل قبل الالتزام به

اختر نموذج البيانات قبل اختيار علامات الترقيم الخاصة به. إذا كانت التعليقات والأسماء المستعارة مهمة، فلن تتمكن خطوة JSON من الحفاظ عليها. إذا كان الرقم null مهمًا، فإن إخراج TOML يغيره. إذا كان المحتوى المختلط المطلوب مهمًا، فإن العرض العادي JSON غير كافٍ. إذا كانت الوجهة عبارة عن جدول، فإن JSON المتداخل يتطلب اتفاقية تسوية واضحة.

استخدم ToolAcre لاختبار مستند تمثيلي واحد وقراءة كل تحذير. والنتيجة هي دليل على زوج ملموس ومدخل، وليس إذنًا باستدعاء جميع التحويلات بدون فقدان أو اكتمال كل محلل مدعوم.

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