TOML إلى JSON

حوّل مستندات TOML إلى JSON مع إمكانية ضبط المسافات البادئة ووضع الإخراج المضغوط.

حوّل مستندات TOML إلى JSON مع إمكانية ضبط المسافات البادئة ووضع الإخراج المضغوط. حوّل مستندات TOML إلى JSON مع إمكانية ضبط المسافات البادئة ووضع الإخراج المضغوط.

الإخراج

خلفية

لماذا قد تريد TOML كـ JSON

JSON هو اللغة المشتركة للويب: كل واجهة برمجية تتحدثه، وكل محرر يستطيع تظليله، ولكل لغة محلل في مكتبتها القياسية. يتميز TOML في الإعدادات التي يحررها البشر لكنه أقل دعمًا عالميًا كصيغة تبادل بيانات في زمن التشغيل. عندما تحتاج إلى إدخال إعدادات TOML في أداة تستهلك JSON فقط (ملاعب الويب، مدققات المخططات، مولّدات الأكواد، إلخ.)، ينقذك محول TOML-إلى-JSON موثوق.

التحويل بلا خسارة في الغالب لأن كلا الصيغتين معبرتان بما يكفي لتمثيل نفس البدائيات. الأنواع القليلة الخاصة بـ TOML (السلاسل متعددة الأسطر، التواريخ) تترجم إلى سلاسل نصية عادية؛ والقيم القليلة الخاصة بـ JSON (null) تترجم إلى القيمة الحرفية null في JSON، التي ليس لـ TOML ما يعادلها أصليًا.

ميزات تستحق المعرفة

يقدم المحول مفتاح طباعة منسقة (بمسافة بادئة 2/4 مسافات) ووضعًا مضغوطًا (سطر واحد). للملفات الكبيرة جدًا، الإخراج المضغوط أسهل بكثير للصق في نص طلب curl. زر التبديل ينقل مخرجات JSON عائدًا إلى صندوق الإدخال لتتمكن من إعادة التحرير والتصدير كـ TOML مجددًا.

نصائح سير العمل

بعد التحويل، تحقق من صحة JSON باستخدام مدقق مخططات (ajv, jsonschema) قبل دفعه إلى أداة في المصب. محلل TOML صارم: يرفض القيم غير المقتبسة التي تبدأ بأرقام، والجداول المضمّنة التي تحتوي تعليقات، وأخطاء شائعة أخرى. استخدم رسائل الخطأ لإصلاح المستند المصدر، لا JSON.

مثال عملي

لنفترض أنك تحتفظ بمقتطف pyproject.toml يسرد إعدادات تشغيل أداتك تحت [tool.beetools]. لتغذية نفس الإعدادات في خط أنابيب بناء جافاسكربت يقبل JSON فقط، مرّر المقتطف عبر هذا المحول. يحافظ الإخراج على تسلسل الجداول، لذا تصبح كتلة متداخلة مثل [tool.beetools.cache] هي { "tool": { "beetools": { "cache": { ... } } } }. تتكثف المفاتيح المنقوطة إلى كائنات متداخلة في الطريق، بما يعكس كيف بنى محلل TOML المفاتيح مبدئيًا. بمجرد حصولك على JSON، تحقق منه بـ ajv أو jsonschema قبل تمريره إلى المصب -- المحول يترجم الصياغة فقط.

مبنية داخليًا. يُحلل TOML بمكتبة smol-toml المرخصة برخصة BSD-3 والمرفقة في public/assets، ثم يُصدر كـ JSON عبر JSON.stringify الأصلي. لا يحدث أي رفع.

الأسئلة الشائعة

هل يدعم المحول ميزات TOML 1.0؟
نعم. يحلل المحول TOML 1.0، بما في ذلك مصفوفات الجداول (`[[name]]`)، والجداول المضمّنة (`{ key = "value" }`)، والمفاتيح المنقوطة (`a.b.c`).
كيف تُصدر تواريخ TOML في JSON؟
تصبح التواريخ دون مكوّن زمني سلاسل JSON بصيغة `YYYY-MM-DD`. التواريخ الزمنية تصبح `YYYY-MM-DDTHH:MM:SS[.fraction][Z|+offset]`. يمكن لمستهلك JSON تحليلها بمكتبة التواريخ في لغته.
ماذا عن السلاسل متعددة الأسطر في TOML؟
تُصدر كسلاسل JSON عادية مع أحرف أسطر جديدة مضمّنة. لا يستطيع JSON الحفاظ على النمط الحرفي الدقيق، لكن القيمة المحللة متطابقة.
هل يمكن للمحول التعامل مع المفاتيح المنقوطة؟
نعم. تصبح `a.b.c = 1` هي `{ "a": { "b": { "c": 1 } } }`. يوسّع المحول كل مفتاح منقوط إلى كائنات متداخلة.
هل يرفض المحول TOML غير الصالح؟
نعم. يرفع المحلل خطأ مع مؤشر سطر/عمود عند أول رمز غير صالح. أصلح TOML المصدر وحاول مجددًا.
هل يُرفع TOML الخاص بي؟
لا. يحدث التحليل محليًا عبر مكتبة smol-toml المرفقة؛ لا يغادر شيء المتصفح.