أدوات المطور · محولات بناء الجملة
لماذا يحتوي TOML على نوع تاريخ/وقت أصلي بينما لا يحتوي JSON على (RFC 3339)
· خلفية
toml json الطوابع الزمنية
TOML هو التنسيق الوحيد في هذه المجموعة الذي يحتوي على تواريخ وأوقات من الدرجة الأولى، وكلها محددة بواسطة RFC 3339. يشرح هذا المنشور أنواع التاريخ والوقت الأربعة TOML، ولماذا لا يوجد أي منها في JSON عمدًا، وما علاقة التحويل بها.
التاريخ الذي أصبح سلسلة — تكوين TOML مع تاريخ إصدار، تم تحويله إلى JSON وتم تقليله إلى نص
التاريخ المحلي TOML مثل `1979-05-27` يصبح السلسلة JSON `"1979-05-27"`. تظل أحرف التقويم باقية، لكن النوع TOML الأصلي لا يظل كذلك. يؤدي تحويل JSON مرة أخرى إلى كتابة سلسلة مقتبسة، وليس رمزًا مميزًا للتاريخ، وتحذير ToolAcre عند التحويل الأول.
هذا حد لا يمكن تجنبه في القيمة JSON البسيطة المختارة. قد يؤدي استدعاء رحلة الذهاب والإياب بلا فقدان إلى الخلط بين النص المحفوظ والنوع المحفوظ. يقوم التحذير بتسمية كل من المسار والنوع الزمني حتى يتمكن المراجعون من تحديد ما إذا كانت السلسلة مقبولة في اتجاه مجرى النهر.
لماذا لا يحتوي JSON على نوع تاريخ - بساطة كروكفورد، واتفاقية السلسلة ISO 8601 واتفاقية المللي ثانية منذ الحقبة التي تتنافس على سد الفجوة
JSON التحليل هنا ينتج عنه قيم فارغة ومنطقية وأرقام وسلاسل ومصفوفات وكائنات؛ لا ينتج كائنات التاريخ. يثبت المستودع حقيقة التنفيذ هذه ولكنه لا يقدم تفسيرات تاريخية لبساطة JSON أو اتفاقيات الصناعة المنافسة.
قد تعتمد التطبيقات سلاسل تشبه ISO أو أرقامًا زمنية بالاتفاق، ولكن هذه عبارة عن اصطلاحات موضوعة في طبقات JSON. لا تستنتج محولات بناء الجملة واحدًا من نص عشوائي ولا تقوم بتحويل TOML القيم الزمنية إلى حساب العصر.
JSON لا يحتوي على نوع تاريخ أصلي في هذا المحول؛ الأساس المنطقي للأصل هو خارج دليل المستودع
يعرض TOML أربعة أنواع: إزاحة التاريخ والوقت بإزاحة Z أو رقمية، والتاريخ والوقت المحلي بدون منطقة، والتاريخ المحلي، والتوقيت المحلي. يمثلها smol-toml ككائنات تشبه التاريخ تحمل بيانات وصفية لطيفة؛ ToolAcre يحدد كل منها قبل تطبيعها.
التمييز يمنع وقوع خطأ جسيم. لم يتم تعيين التوقيت المحلي بشكل صامت UTC، ولا يتم نقل التاريخ والوقت المحلي بين المناطق. تظل الإزاحة الغائبة غائبة في السلسلة JSON.
RFC 3339 كأساس — ملف تعريف ISO 8601 الذي يستعيره TOML، بما في ذلك بدل فاصل المسافة
يستدعي المُطبيع مُنسق قيمة المحلل اللغوي ISO ويزيل فقط جزء `.000` الاصطناعي. إنه يحتفظ بالثواني الكسرية ذات المغزى والشكل المحلي مقابل الإزاحة الموجه نحو المصدر. تصف التعليمات البرمجية هذا كنص RFC 3339، لكن المقالة لا تخترع بنود المواصفات مثل بدلات الفاصل بما يتجاوز المخرجات التي تم اختبارها.
يظل مثال الإزاحة عبارة عن نص التاريخ والوقت بدلاً من تحويله إلى قيمة Z عالمية بواسطة هذه الطبقة. يؤدي ذلك إلى تجنب تغيير التمثيل المكتوب والاحتفاظ بالتفسير الزمني للتطبيق الذي يمتلكه.
ToolAcre يحافظ على النص الزمني الموجه نحو المصدر دون التأكيد على تفاصيل الامتثال الكاملة RFC 3339
تصبح كل قيمة مؤقتة سلسلة، وتشير التحذيرات إلى أن JSON وYAML وXML ليس لها نوع تاريخ في نموذج التحويل هذا. لا يتم إسقاط الإزاحات عمدًا، ولا تكتسب القيم المحلية أيًا منها. المعلومات المفقودة هي فئة النوع TOML نفسها.
عند التحويل العكسي، يتم اقتباس السلسلة لأن الكاتب ليس لديه علامة تخبره باستعادة التاريخ والوقت. إعادة تحليل السلاسل العشوائية التي تبحث عن التاريخ كتواريخ قد تؤدي إلى كتابة معرفات أو تسميات عادية بشكل غير صحيح وستخترع اتفاقية لا تتم مشاركتها بواسطة JSON.
يحتفظ المحول بالتهجئة المحلية مقابل الإملائية، ثم يفقد النوع TOML الأصلي
استخدم `odt = 1979-05-27T07:32:00Z` و`ldt = 1979-05-27T07:32:00` و`ld = 1979-05-27` و`lt = 07:32:00`. JSON يحتوي على أربع سلاسل بهذه التهجئة. يسرد التحذير مسارات التاريخ والوقت والتاريخ المحلي والتاريخ المحلي والتوقيت المحلي.
قم بتحويل JSON مرة أخرى إلى TOML. يتم اقتباس كل قيمة. تظل القيمة الكسرية `00.500Z` كسرية، بينما لا تكتسب قيمة الثانية الكاملة `.000`. هذا هو السلوك المدعوم الفعلي ويوضح بوضوح النص المحفوظ مقابل النوع المفقود.
مثال عملي: جميع الأنواع الزمنية الأربعة TOML تصبح سلاسل وترجع علامات الاقتباس
لا يعد البحث عن قاعدة المنطقة الزمنية وانتقالات التوقيت الصيفي وتحويل العصر جزءًا من هذا المسار. لا يمكن للتاريخ والوقت المحلي بدون منطقة أن يصبح لحظة فريدة بدون مزيد من المعلومات. يعالج محول الطابع الزمني Unix اللحظات المعروفة بموجب عقد مختلف.
لا تقم بتغذية كل سلسلة ناتجة إلى JavaScript تاريخ وتفترض معنى مكافئًا. يتطلب التاريخ المحلي والتوقيت المحلي ووقت التاريخ بدون منطقة سياق التطبيق. الحفاظ على الدلالات التحذيرية والميدانية من خلال الترحيل.
الخلاصة: TOML يعرف التاريخ، JSON يعرف فقط ما هي السلسلة - وكيف تعرض لوحة محولات Syntax هذا الاختلاف في متصفحك
TOML يعرف أربع فئات زمنية؛ JSON يتلقى السلاسل فقط هنا. ToolAcre يحافظ على التهجئة بعناية ويرفض اختراع منطقة، ولكن النوع الأصلي اختفى ولا يمكن إعادة بنائه تلقائيًا عند العودة.
قم بمراجعة كل مسار تم تحذيره وحدد اتفاقية التطبيق عندما يجب أن تظل الدلالات الزمنية موجودة. في حالة عدم وجود مثل هذه الاتفاقية، احتفظ بـ TOML كمصدر موثوق بدلاً من التعامل مع رحلة الذهاب والعودة المقتبسة على أنها مكافئة.
تحدد اصطلاح الصوت أيضًا السلاسل التي يمكن تحليلها مرة أخرى وتحت أي سياق. يمكن لوقت وتاريخ الإزاحة تحديد لحظة، بينما لا يمكن للتاريخ والوقت المحلي أو التاريخ أو الوقت القيام بذلك بدون قواعد إضافية. قم بتخزين النوع الأصلي بجانب السلسلة التي تمت تسويتها عندما تحتاج مرحلة لاحقة إلى إعادة بناء TOML أو جدولة العمل. بخلاف ذلك، اقبل أن JSON يحمل نصًا معروضًا وتجنب ترقيته بصمت إلى طابع زمني عالمي.