Utilia

محول TOML إلى JSON

حوّل TOML إلى JSON وJSON إلى TOML في متصفحك، مع دعم الجداول ومصفوفات الجداول والتواريخ والأعداد الصحيحة 64 بت. لا يُرفع أي شيء.

اتجاه التحويل

كيف تحوّل TOML إلى JSON

  1. اختر اتجاه التحويل: TOML → JSON (الافتراضي) أو JSON → TOML.
  2. الصق بياناتك، أو انقر فتح ملف لتحميل ملف .toml أو .json (حتى 10 MB).
  3. في اتجاه TOML → JSON، اختر المسافة البادئة (مسافتان أو 4 مسافات) وقرّر ما إذا كنت ستفعّل الأعداد الكبيرة كسلاسل نصية. وفي اتجاه JSON → TOML، أبقِ حذف القيم null مفعّلًا أو ألغِه.
  4. فعّل ترتيب المفاتيح إن أردت ترتيب كل جدول أبجديًا.
  5. تتحدّث النتيجة أثناء الكتابة، ويعيد زر تحويل تنفيذ التحويل عند الطلب. تُظهر الأخطاء السطر والعمود اللذين توجد فيهما المشكلة.
  6. انسخ النتيجة أو نزّلها. ينقل زر عكس الاتجاه المخرجات إلى الإدخال لتحويلها في الاتجاه المعاكس.

TOML وJSON جنبًا إلى جنب

TOML (Tom’s Obvious Minimal Language) هي صيغة الإعدادات المستخدمة في Cargo.toml بلغة Rust، وpyproject.toml بلغة Python، ومواقع Hugo وNetlify، وكثير من أدوات سطر الأوامر. صُمّمت ليقرأها البشر ويعدّلوها بسهولة، وهي تقابل مباشرةً شجرة شبيهة بـ JSON من الجداول (الكائنات) والمصفوفات والقيم.

[package]
name = "demo"
version = "0.1.0"

[[bin]]
name = "cli"

تصبح

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • يتحوّل رأس الجدول [table] إلى كائن JSON، والمفاتيح المنقّطة مثل a.b.c = 1 إلى كائنات متداخلة.
  • تتحوّل مصفوفة الجداول [[bin]] إلى مصفوفة JSON من الكائنات.
  • تعمل الجداول المضمّنة { x = 1 } والمصفوفات كما تتوقّع. أما التعليقات فتُحذف، لأن JSON لا تدعمها.

أين تختلف الصيغتان؟

التواريخ والأوقات. في TOML أربعة أنواع أصلية للتاريخ والوقت، ولا يوجد أي منها في JSON. يكتبها المحول كسلاسل نصية بصيغة ISO 8601 مع الحفاظ على نوعها: يبقى التاريخ والوقت مع الإزاحة 1979-05-27T07:32:00.000-08:00، ويبقى التاريخ المحلي 1979-05-27، والوقت المحلي 07:32:00.000. تُحفظ أجزاء الثانية حتى الميلي ثانية. وعند التحويل العكسي إلى TOML تصبح سلاسل نصية عادية، إذ لا شيء في JSON يشير إلى أنها تواريخ.

الأعداد الصحيحة. الأعداد الصحيحة في TOML ذات إشارة وبطول 64 بت، من −9,223,372,036,854,775,808 إلى 9,223,372,036,854,775,807. أما أعداد JavaScript، التي تستخدمها معظم محلّلات JSON، فلا تكون دقيقة إلا حتى 2^53 ‏(9,007,199,254,740,991). تُكتب أعداد TOML الأكبر بكل أرقامها، وهذا JSON صالح، لكن البرنامج الذي يقرؤها كأعداد عشرية مزدوجة سيقرّبها؛ فعّل الأعداد الكبيرة كسلاسل نصية لتجنّب ذلك. ويُرفض العدد الصحيح الخارج عن نطاق 64 بت، كما تشترط مواصفة TOML.

القيم العشرية الخاصة. لا صيغة في JSON لقيم inf و-inf وnan، لذلك تُكتب كسلاسل نصية "inf" و"-inf" و"nan".

JSON → TOML. مستند TOML هو دائمًا جدول، لذا يجب أن يكون JSON كائنًا في المستوى الأعلى. ولا توجد null في TOML: تُحذف القيم null افتراضيًا وتخبرك رسالة بعددها؛ ألغِ تفعيل حذف القيم null لتحصل بدلًا من ذلك على خطأ يحدّد موضع أول قيمة منها. ولا يميّز JSON بين 1 و1.0، لذا تصبح الأعداد الكاملة أعدادًا صحيحة في TOML، والأعداد الأكبر من 64 بت أعدادًا عشرية. وفي المتصفحات الحديثة، تحتفظ الأعداد الصحيحة الكبيرة في JSON بأرقامها الدقيقة.

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

هل تُرسل إعداداتي إلى أي مكان؟

لا. يجري التحويل بالكامل في متصفحك، فلا تغادر مفاتيح API أو الأسرار الموجودة في ملفات إعداداتك جهازك أبدًا.

لماذا تغيّر ترتيب مفاتيحي في مخرجات TOML؟

تشترط TOML أن تأتي أزواج المفتاح/القيمة البسيطة قبل الجداول الفرعية في كل جدول، لذا يكتب المحول القيم أولًا، ثم [tables]، ثم [[arrays of tables]]. البيانات نفسها لا تتغيّر.

هل تُحفظ تعليقات TOML؟

لا. لا توجد تعليقات في JSON، فتضيع عند التحويل TOML → JSON، ولا يبقى منها شيء لاستعادته في الاتجاه المعاكس.

ما إصدار TOML المدعوم؟

TOML 1.0، بما في ذلك المفاتيح المنقّطة والجداول المضمّنة ومصفوفات الجداول والأعداد الصحيحة الست عشرية والثمانية والثنائية وأنواع التاريخ والوقت الأربعة.

لماذا أصبح تاريخي سلسلة نصية في JSON؟

لا يوجد نوع للتاريخ في JSON. السلاسل النصية بصيغة ISO 8601 هي العُرف المعتاد، ويمكن لمعظم لغات البرمجة تحليلها مباشرة.