JSON إلى TOML

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

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

الإخراج

خلفية

لماذا تحويل JSON إلى TOML

JSON موجود في كل مكان على الشبكة، لكن TOML هو التنسيق الذي تستخدمه معظم ملفات الإعدادات الحديثة فعليًا (Cargo وpyproject.toml وGitHub Actions وuv وغيرها الكثير). عندما تنسخ مقتطف JSON من واجهة API إلى ملف إعدادات، عليك عادةً ترجمة الصياغة يدويًا: الأقواس المعقوفة تصبح أقسامًا، والأقواس المربعة تصبح مصفوفات، والفواصل تصبح أسطرًا جديدة، والمفاتيح المقتبسة تصبح مفاتيح مجردة.

المحول يؤتمت هذه الترجمة بحيث يمكنك لصق استجابة واجهة API ونسخ إخراج TOML وتنتهي المهمة.

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

معظم المحولات تحافظ على ترتيب كائنات JSON افتراضيًا. TOML يسمح لك بإعادة ترتيب الأقسام، لذا فإن خيار "فرز المفاتيح" يساعد عندما تريد مقارنة مستقرة بين عمليات التشغيل. التحكم في المسافة البادئة يتيح لك مطابقة دليل الأنماط للمشروع (مسافتان أو أربع مسافات).

بالنسبة لمصفوفات الجداول في TOML، يصدر المحول الشكل المضمّن key = [ ... ] عندما تحتوي مصفوفة JSON على كائن واحد موحد، وشكل رأس [[section]] للقوائم التي تخلط الأنواع أو تكرر نفس المخطط. هذه هي الحالة الوحيدة التي يكون فيها التحويل غير ميكانيكي بالكامل.

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

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

مثال عملي

تخيل أن لديك استجابة واجهة API تسرد علامات ميزات مشروعك وتريد لصقها مباشرة في كتلة pyproject.toml. يبدو JSON مثل { "name": "beetools", "features": ["json", "toml"] }. بعد التحويل يقرأ TOML name = "beetools" وfeatures = ["json", "toml"]، ويمكنك وضعه في [tool.beetools] دون مزيد من التعديل. مصفوفات الجداول ([[items]]) تأتي من مصفوفات JSON التي تكون عناصرها كائنات بمفاتيح متطابقة؛ يكتشف المحول الشكل المتجانس ويصدر الشكل متعدد الأسطر تلقائيًا. إذا رأيت إخراجًا مبسطًا بدلاً من ذلك، فإن الإدخال خلط الأنواع -- قسّم المصدر يدويًا وأعد التشغيل.

مبني داخليًا. يُقرأ JSON باستخدام JSON.parse الأصلي؛ ويتم إنتاج الإخراج بواسطة مكتبة smol-toml المرخصة BSD-3 المرفقة في public/assets. لا يتم إرسال أي شيء إلى خادم.

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

هل يدعم المحول الكائنات المتداخلة؟
نعم. تصبح كائنات JSON المتداخلة جداول TOML متداخلة. يحافظ المحول على العمق، ويتوسع التداخل العميق جدًا في رؤوس `[[section.sub]]` وفقًا لذلك.
ماذا عن مصفوفات القيم الأولية؟
تصبح مصفوفات القيم الأولية (أرقام، سلاسل، قيم منطقية) مصفوفات TOML مضمّنة. يتم رفض مصفوفات الأنواع المختلطة من قبل المحلل الأساسي لأن TOML يتطلب مصفوفات متجانسة.
هل يتم الحفاظ على قيم null في JSON؟
لا يحتوي TOML على قيمة null. يقوم المحول بحذف قيم `null` ويصدر تحذيرًا؛ إذا كنت بحاجة إلى تسجيل الغياب، بدّل إلى سلسلة فارغة أو قيمة حارسة قبل التحويل.
لماذا ينقص الإخراج تعليقات JSON الأصلية؟
لا يدعم JSON التعليقات. إذا كنت بحاجة إلى تعليقات في TOML، أضفها يدويًا بعد التحويل.
هل سيغير المحول ترتيب المفاتيح؟
لا. افتراضيًا يتم إصدار المفاتيح بترتيب JSON. فعّل خيار الفرز إذا كنت تريد تخطيطًا مستقرًا أبجديًا للمقارنة.
هل يتم إرسال JSON الخاص بي إلى أي مكان؟
لا. يتم التحويل بالكامل في متصفحك باستخدام JSON.parse الأصلي ومكتبة smol-toml المرفقة.