طريقة الاستخدام
- الصق ملف TOML في مستند TOML، أو أبقِ المثال الموجود.
- اقرأ الفحص. الأخضر يعني أن الملف يتبع TOML 1.0.0، والأحمر يذكر السطر والقاعدة التي يكسرها الملف.
- انسخ مخرج JSON، أو نزّله باسم data.json.
كيف يعمل التحويل
يتبع القارئ قواعد TOML 1.0.0، ويبني الشجرة التي تصفها المواصفة. ثم تُكتب الشجرة بصيغة JSON بمسافتين للإزاحة، وتحتفظ المفاتيح بترتيب الملف، فيُقرأ JSON كما يُقرأ TOML.
- يصبح الجدول وجداوله الفرعية كائنات JSON.
- تصبح المصفوفة مصفوفة JSON. ومصفوفة الجداول، التي تكتبها TOML بقوسين مزدوجين، تصبح مصفوفة JSON من الكائنات.
- يصبح الجدول المضمّن كائن JSON، وتبقى مفاتيحه بترتيب سطره.
ما لا يستطيع JSON حمله
- يصبح التاريخ أو الوقت أو التاريخ مع الإزاحة نصاً، مثل ”1979-05-27T07:32:00-08:00“. فلا يملك JSON نوع تاريخ، والنص يحفظ الإزاحة وكل أرقام الكسر.
- تصبح اللانهاية أو NaN السلسلة ”inf“ أو ”-inf“ أو ”nan“، لأن JSON لا يملك هذا العدد.
- يُكتب العدد العشري بلا كسر، مثل 1.0، هكذا 1.0، ويُكتب العدد الصحيح مثل 1 هكذا 1. ويقرأ قارئ JSON الذي يعرف نوعاً واحداً من الأعداد كليهما على أنه العدد نفسه.
القواعد التي يتبعها الفحص
يُرفض الملف حين يكسر قاعدة من المواصفة. وتسبب هذه القواعد أغلب الأخطاء:
- لا يُعرَّف المفتاح إلا مرة واحدة. والمفتاح غير المقتبس والمفتاح المقتبس بالاسم نفسه هما المفتاح نفسه.
- ترويسة الجدول تعرّف جدولها مرة واحدة. ويمكن تعريف جدول كانت ترويسة أطول تضمّنته ضمناً فيما بعد، أما جدول أُنشئ بمفاتيح منقّطة أو بجدول مضمّن فلا.
- تنمو مصفوفة الجداول بجدول واحد لكل ترويسة مكتوبة بقوسين مزدوجين. والمصفوفة الثابتة، مثل التي تُكتب بزوج أقواس فارغ، لا تنمو بهذه الطريقة.
- العدد الصحيح عدد موقّع بـ64 بت، من -9223372036854775808 إلى 9223372036854775807.
مثال محلول: تاريخ وعدد عشري وعدد صحيح كبير
يعطي كل صف سطراً واحداً من TOML والقيمة التي تكتبها الأداة له بصيغة JSON. شغّل الأسطر الأربعة معاً لترى النتيجة نفسها في مخرج واحد.
| سطر TOML | قيمة JSON |
|---|---|
| when = 1979-05-27T07:32:00-08:00 | "when": "1979-05-27T07:32:00-08:00" |
| ratio = 1.0 | "ratio": 1.0 |
| port = 8000 | "port": 8000 |
| id = 9223372036854775807 | "id": 9223372036854775807 |
الأسئلة الشائعة
لماذا يُكتب التاريخ نصاً في JSON؟
لا يملك JSON نوع تاريخ أو وقت، لذلك تكتب الأداة النص الذي يحمله ملف TOML. ويحفظ النص الإزاحة وكل أرقام الكسر، فلا يضيع شيء عند قراءة JSON.
لماذا يبقى 1.0 بصيغته، ويبقى 1 بصيغته؟
تفرّق TOML بين العدد الصحيح والعدد العشري بالنقطة أو الأس، ويحفظ JSON هذا الفرق في الأرقام التي يكتبها. وهل يحتفظ قارئ JSON بهذا الفرق يتوقف على ذلك القارئ.
لماذا ترفض الأداة جدولاً معرّفاً مرتين؟
تسمح TOML 1.0.0 لترويسة الجدول بأن تعرّف جدولها مرة واحدة، وللمفتاح مرة واحدة فقط. والتعريف الثاني خطأ في السطر الذي يُكتب فيه، فلا يحوي JSON أبداً قيمة يناقضها الملف.
هل تبقى التعليقات وترتيب المفاتيح؟
تُحذف التعليقات، لأن JSON لا يملك تعليقات. ويبقى ترتيب المفاتيح، لأن الأعضاء تُكتب بترتيب الملف.
هل يمكن تحويل ملف TOML فيه مصفوفة متعددة الأسطر؟
نعم. تستطيع المصفوفة أن تمتد على عدة أسطر وأن تنتهي بفاصلة، كما تسمح TOML 1.0.0، وتكتبها الأداة مصفوفة JSON واحدة.
هل يُرسل النص الملصوق إلى أي جهة؟
لا. يعمل التحويل في متصفحك، ولا يُحفظ ما تلصقه ولا يُرسل إلينا. ومع ذلك لا تلصق كلمة مرور أو رمزاً في صفحة لا تثق بها.
المصادر
- TOML v1.0.0 specification (باللغة الإنجليزية)
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format (باللغة الإنجليزية)
آخر مراجعة للأرقام والنص: الأربعاء، 1 جمادى الآخرة 1448 بعد الهجرة.