محوّل TOML إلى JSON
الصق TOML واحصل على JSON فورًا في متصفحك. جاهز لملفات Cargo.toml وpyproject.toml وconfig.toml، مع معالجة دقيقة للتواريخ والجداول المتداخلة. خصوصية تامة بلا رفع.
الخيارات · مسافتان
ما هو TOML ولماذا التحويل إلى JSON؟
TOML (اختصار Tom's Obvious, Minimal Language) هو صيغة ملفات إعداد أنشأها Tom Preston-Werner لتكون غير ملتبسة، وسهلة القراءة على البشر، وقابلة للتحويل بسهولة إلى جدول تجزئة. أصبحت صيغة الإعداد الافتراضية لبيئة Rust (Cargo.toml)، وتغليف Python الحديث (pyproject.toml، الموحّد في PEP 518 وPEP 621)، وأدوات مثل Hugo وNetlify وPoetry وFoundry. أما JSON فهو صيغة التبادل الآلي العالمية — كل لغة تحلّله، وكل واجهة برمجية تتكلّم به. لذا فإن تحويل TOML إلى JSON مهمة شائعة: تكتب الإعداد بصيغة TOML المقروءة، ثم تحوّله إلى JSON لتغذية برنامج، أو فحصه بأدوات JSON، أو مقارنته داخل مسار معالجة.
تملك هذه الأداة عدة عوامل تميّز تهمّ الصحة:
**1. أمانة التاريخ والوقت.** يملك TOML أنواع تاريخ ووقت من الدرجة الأولى — التاريخ والوقت مع الإزاحة، والتاريخ والوقت المحلي، والتاريخ المحلي، والوقت المحلي — يفتقر إليها JSON تمامًا. تُسطّح المحوّلات الساذجة كلها إلى طوابع زمنية ISO، فيصبح تاريخ محلي مثل 1979-05-27 هكذا 1979-05-27T00:00:00Z، مختلقةً بصمت وقتًا ومنطقة زمنية. تحافظ هذه الأداة على نوع TOML بدقة: تبقى التواريخ المحلية تواريخ تقويمية، ويبقى الوقت المحلي وقتًا، ولا تحمل المنطقة الزمنية إلا التواريخ والأوقات ذات الإزاحة. هذا يبقي بياناتك أمينة والتحويل ذهابًا وإيابًا بلا خسارة.
**2. دعم كامل لـ TOML 1.0.0.** الجداول المتداخلة والمفاتيح المنقّطة والجداول المضمّنة ومصفوفات الجداول ([[section]]) تُحلَّل جميعها بصحة وفق مواصفة TOML 1.0.0 باستخدام مكتبة smol-toml عديمة الاعتماديات. ملفات Cargo.toml وpyproject.toml الحقيقية بجداولها المضمّنة والقياسية المختلطة تُحوَّل بالضبط كما تتطلّب المواصفة.
**3. تعامل أمين مع الأعداد الصحيحة الكبيرة.** أعداد TOML الصحيحة بحجم 64 بت، لكن JavaScript في المتصفح لا يستطيع الاحتفاظ بالأعداد الصحيحة بدقة إلا حتى 2^53 - 1. بدلًا من إفساد قيمة كبيرة بصمت أو الانهيار، تحوّل هذه الأداة إلى أقرب عدد JSON وتحذّرك، فتستطيع اختيار تخزين القيمة كسلسلة نصية بدلًا من ذلك. هذه الأمانة تجاه قيد جوهري في المتصفح شيء تتجاوزه معظم المحوّلات.
**4. خصوصية بنسبة 100% داخل المتصفح.** ملف TOML الخاص بك — الذي قد يحتوي رموز سجلات أو مصادر حزم داخلية أو أسرار نشر — لا يغادر متصفحك أبدًا. لا رفع، ولا خادم، ولا تسجيل. يمكنك تأكيد ذلك في تبويب الشبكة بمتصفحك.
تحتاج الاتجاه المعاكس؟ استخدم محوّل JSON إلى TOML. تحوّل بين صيغ إعداد أخرى؟ جرّب محوّل JSON إلى YAML ومحوّل YAML إلى JSON، أو تحقّق من ناتج JSON ونسّقه أولًا بـ منسّق JSON. لكلٍّ من TOML وJSON وYAML مكانه: TOML لإعداد التطبيقات المحرَّر يدويًا، وJSON للتبادل الآلي، وYAML لمانيفستات البنية التحتية العميقة التداخل. يتيح لك هذا المحوّل الانتقال بين الأولَين دون سطر برمجي واحد.
// Convert TOML to JSON in Node.js using the smol-toml library
import { parse } from 'smol-toml';
const toml = `
[package]
name = "my-app"
version = "1.0.0"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
`;
const data = parse(toml);
const json = JSON.stringify(data, null, 2);
console.log(json);
// {
// "package": { "name": "my-app", "version": "1.0.0" },
// "dependencies": {
// "serde": { "version": "1.0", "features": ["derive"] }
// }
// } الميزات الرئيسية
تحويل مباشر
يتحدّث ناتج JSON فورًا أثناء كتابة أو لصق TOML — دون الحاجة إلى زر «تحويل». المدخلات الكبيرة (أكبر من 200 كيلوبايت) تنتقل تلقائيًا إلى الوضع اليدوي لإبقاء المتصفح مستجيبًا.
أمانة التاريخ والوقت
التواريخ والأوقات مع الإزاحة، والتواريخ والأوقات المحلية، والتواريخ المحلية، والأوقات المحلية في TOML تُحوَّل إلى سلاسل JSON تحافظ على النوع الأصلي — بلا طوابع زمنية مُختلَقة عند منتصف الليل، فيبقى التحويل ذهابًا وإيابًا بلا خسارة.
دعم كامل لـ TOML 1.0.0
الجداول المتداخلة والمفاتيح المنقّطة والجداول المضمّنة ومصفوفات الجداول ([[section]]) تُحلَّل جميعها بصحة عبر محرّك smol-toml عديم الاعتماديات، مطابقةً لمواصفة TOML 1.0.0.
جاهز لـ Cargo.toml وpyproject.toml
مُحسَّن لأكثر ملفات TOML شيوعًا في الواقع — مانيفستات Rust وإعدادات تغليف Python — بما في ذلك الجداول المضمّنة ومصفوفات الجداول. حمّل مثالًا لرؤية بنية JSON الناتجة بالضبط.
تحذيرات أمينة للأعداد الصحيحة الكبيرة
الأعداد الصحيحة خارج النطاق الآمن لـ JavaScript (2^53) لا يمكن تمثيلها بدقة في JSON — تحوّلها الأداة إلى أقرب عدد وتحذّرك، بدلًا من إفساد القيمة بصمت.
خصوصية بنسبة 100% داخل المتصفح
يجري كل التحليل محليًا في متصفحك. ملف TOML الخاص بك — بما فيه رموز السجلات ومصادر الحزم الخاصة وأسرار النشر — لا يُرفَع ولا يُخزَّن ولا يُسجَّل أبدًا.
أمثلة
ملف Cargo.toml (لغة Rust)
[package]
name = "my-app"
version = "1.0.0"
edition = "2021"
authors = ["Jane Doe <jane@example.com>"]
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
[dev-dependencies]
criterion = "0.5"
[[bin]]
name = "my-app"
path = "src/main.rs" حوّل ملف مانيفست Cargo.toml الخاص بلغة Rust إلى JSON — مفيد للأدوات، ولوحات متابعة الاعتماديات، أو تغذية بيانات cargo metadata إلى سكربتات تتوقع JSON.
ملف pyproject.toml (لغة Python)
[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "my-package" version = "0.3.1" requires-python = ">=3.10" dependencies = [ "requests>=2.31", "pydantic>=2.0" ] [project.optional-dependencies] dev = ["pytest>=8.0", "ruff>=0.4"] [tool.ruff] line-length = 100
حوّل ملف pyproject.toml المتوافق مع PEP 621 إلى JSON لفحص بيانات المشروع الوصفية والاعتماديات وإعدادات الأدوات برمجيًا.
ملف netlify.toml
[build] command = "npm run build" publish = "dist" [build.environment] NODE_VERSION = "20" [[redirects]] from = "/old-path" to = "/new-path" status = 301 force = true [[headers]] for = "/*" [headers.values] X-Frame-Options = "DENY"
حوّل إعدادات بناء Netlify إلى JSON لتدقيق عمليات إعادة التوجيه والترويسات، أو لتوليد الإعداد المكافئ لمنصة أخرى.
ملف config.toml الخاص بـ Hugo
baseURL = "https://example.org" languageCode = "en-us" title = "My Hugo Site" theme = "ananke" [params] description = "A static site built with Hugo" mainSections = ["posts", "docs"] [[menu.main]] name = "Blog" url = "/posts/" weight = 1 [[menu.main]] name = "About" url = "/about/" weight = 2
حوّل ملف config.toml لموقع Hugo إلى JSON لترحيل الإعدادات، أو مقارنة الإعداد، أو تشغيل واجهة إعدادات.
ملف rustfmt.toml
edition = "2021" max_width = 100 hard_tabs = false tab_spaces = 4 newline_style = "Unix" use_small_heuristics = "Default" reorder_imports = true reorder_modules = true
حوّل ملف rustfmt.toml المسطّح إلى JSON — مثال جيد على كيفية تحويل أزواج المفتاح والقيمة على المستوى الأعلى (بلا جداول) مباشرةً إلى كائن JSON.
إعداد تطبيق بتواريخ ومصفوفات جداول
title = "Deployment Log" last_deployed = 1979-05-27T07:32:00Z release_date = 1979-05-27 maintenance_window = 02:00:00 [[servers]] name = "alpha" ip = "10.0.0.1" ports = [8001, 8002] [[servers]] name = "beta" ip = "10.0.0.2" ports = [9001]
يُظهر كيف تتحوّل أنواع التاريخ والوقت الأصلية في TOML (التاريخ والوقت مع الإزاحة، والتاريخ المحلي، والوقت المحلي) ومصفوفات الجداول بنظافة إلى سلاسل نصية ومصفوفات في JSON.
كيفية الاستخدام
- 1
الصق TOML الخاص بك
أدخِل أو الصق TOML في حقل الإدخال أعلاه. يمكنك أيضًا النقر «تحميل مثال» لتجربة ملف Cargo.toml أو pyproject.toml حقيقي أو إعداد نشر.
- 2
شاهِد ناتج JSON المباشر
يظهر JSON فورًا في لوحة الإخراج. اضبط خيار المسافة البادئة (مسافتان أو أربع) لمطابقة صيغتك المستهدفة. تُعالَج التواريخ والجداول ومصفوفات الجداول تلقائيًا.
- 3
انسخ أو نزّل
انقر «نسخ» لنقل JSON إلى حافظتك، أو «تنزيل» لحفظه كملف .json جاهز لبرنامجك أو واجهتك البرمجية أو أدواتك.
مزالق TOML الشائعة
قيم نصية بلا علامات اقتباس
في TOML، يجب وضع القيم النصية بين علامتي اقتباس. الكلمة المجرّدة على يمين علامة المساواة صالحة فقط للقيم المنطقية (true/false)، أو الأعداد، أو التواريخ، أو كجزء من مصفوفة. ضع سلاسلك النصية بين علامتي اقتباس مزدوجتين أو مفردتين.
name = my-app
name = "my-app"
مفاتيح مكرّرة
يمنع TOML تعريف المفتاح نفسه مرتين داخل الجدول نفسه، ويمنع إعادة تعريف جدول عُرّف سابقًا. هذا خطأ شائع عند دمج شظايا الإعداد. يجب أن يكون كل مفتاح وكل جدول فريدًا.
name = "a" name = "b"
name = "a" alt_name = "b"
صيغة تاريخ ووقت غير صالحة
تتبع تواريخ وأوقات TOML معيار RFC 3339. يحتاج التاريخ إلى سنة من 4 أرقام، وشهر من رقمين، ويوم من رقمين؛ ويحتاج التاريخ والوقت إلى فاصل T (أو مسافة). التواريخ المشوّهة تفشل في التحليل.
released = 2026-7-2
released = 2026-07-02
قوس إغلاق مفقود
يجب إغلاق المصفوفات والجداول المضمّنة وترويسات الجداول. القوس [ أو { غير المغلق يُنتج خطأ تحليل يشير إلى السطر والعمود حيث اكتُشِفت المشكلة.
ports = [8001, 8002
ports = [8001, 8002]
عدد صحيح خارج النطاق الآمن
أعداد TOML الصحيحة بحجم 64 بت، لكن أعداد JSON في المتصفح محدودة بـ 2^53 - 1. القيم التي تتجاوز ذلك تُقرَّب أثناء التحويل ويُعرَض تحذير. خزّن الأعداد الصحيحة الكبيرة جدًا كسلاسل نصية بين علامتي اقتباس للحفاظ على دقتها.
snowflake = 1420070400000000000
snowflake = "1420070400000000000"
إعادة تعريف جدول
بمجرد تعريف جدول مثل [servers]، لا يمكنك فتحه مرة أخرى بالترويسة نفسها. للحصول على مدخلات متعددة، استخدم مصفوفة جداول ([[servers]]) بدلًا من ذلك، وهي تصبح مصفوفة JSON من الكائنات.
[servers] name = "a" [servers] name = "b"
[[servers]] name = "a" [[servers]] name = "b"
حالات الاستخدام الشائعة
- بيانات Cargo الوصفية في Rust
- حوّل Cargo.toml إلى JSON لبناء لوحات متابعة الاعتماديات، أو تدقيق إصدارات وميزات الحزم، أو تغذية بيانات المانيفست إلى سكربتات وأنظمة تكامل مستمر تتوقع JSON بدلًا من TOML.
- إعداد مشروع Python
- حوّل pyproject.toml إلى JSON لفحص بيانات مشروع PEP 621 الوصفية، أو استخراج قوائم الاعتماديات، أو تشغيل أدوات تقرأ إعداد التغليف برمجيًا.
- فحص إعداد النشر
- حوّل netlify.toml أو foundry.toml أو إعدادات منصات أخرى إلى JSON لتدقيق عمليات إعادة التوجيه والترويسات وإعدادات البناء، أو لتوليد إعداد مكافئ لمنصة مختلفة.
- ترحيل صيغة الإعداد
- حوّل إعداد تطبيق بصيغة TOML إلى JSON عند الانتقال إلى نظام يفضّل JSON، أو كخطوة وسيطة قبل تحويل إضافي بأدوات JSON مثل jq.
- إعدادات المواقع الساكنة
- حوّل config.toml الخاص بـ Hugo إلى JSON لترحيل إعدادات الموقع، أو مقارنة الإعداد عبر البيئات، أو بناء واجهة إعدادات مدعومة بـ JSON.
- إدخال للواجهات البرمجية والسكربتات
- حوّل TOML المكتوب بيد الإنسان إلى JSON تستطيع واجهة REST أو دالة بلا خادم أو سكربت أتمتة استهلاكه مباشرةً، جاسرًا بين الإعداد المقروء والإدخال الآلي.
تفاصيل تقنية
- تحليل TOML 1.0.0 عبر smol-toml
- يُحلَّل TOML بمكتبة smol-toml، وهي محلّل عديم الاعتماديات ومتوافق تمامًا مع TOML 1.0.0. يتعامل بصحة مع الجداول المتداخلة والمفاتيح المنقّطة والجداول المضمّنة ومصفوفات الجداول والسلاسل متعددة الأسطر وأنواع التاريخ والوقت الأربعة، ويبلّغ عن أخطاء التحليل مع مواضع السطر والعمود.
- تعامل بلا خسارة مع التاريخ والوقت وأمين مع الأعداد الصحيحة
- تُسلسَل تواريخ وأوقات TOML إلى سلاسل JSON تحافظ على نوعها بدقة (التاريخ والوقت مع الإزاحة، والتاريخ والوقت المحلي، والتاريخ المحلي، والوقت المحلي). الأعداد الصحيحة خارج النطاق الآمن لـ JavaScript (2^53 - 1) تُرقّى إلى BigInt أثناء التحليل، ثم تُحوَّل إلى أقرب عدد JSON مع تحذير عن الدقة، فلا يفشل TOML الصالح في التحويل أبدًا.
- بنسبة 100% داخل المتصفح — بلا رفع وبلا خادم
- تجري كل المعالجة في محرّك JavaScript بمتصفحك. لا تُرسَل أي بيانات في أي لحظة. المدخلات الأكبر من 200 كيلوبايت تنتقل من الوضع المباشر إلى اليدوي (نقرة «تحويل» صريحة) لإبقاء الواجهة مستجيبة.
أفضل الممارسات
- خزّن الأعداد الصحيحة الكبيرة جدًا كسلاسل نصية
- إن كان TOML يحتوي أعدادًا صحيحة تتجاوز 2^53 - 1 (معرّفات Snowflake، طوابع زمنية بالنانوثانية، عدّادات كبيرة)، ضعها بين علامتي اقتباس كسلاسل نصية قبل التحويل. أعداد JSON في المتصفح لا يمكنها الاحتفاظ بها بدقة، وستحذّرك الأداة عندما تضطر إلى التقريب.
- فضّل المسافتين للمسافة البادئة في ناتج JSON
- المسافة البادئة بمسافتين هي العُرف الأوسع استخدامًا لـ JSON، وتُنتج ناتجًا نظيفًا ومقروءًا يتوافق مع معظم المنسّقات وأدوات المقارنة. احتفظ بأربع مسافات لحين طلب دليل الأسلوب لها.
- تحقّق من ناتج JSON قبل استخدامه
- بعد التحويل، إن كنت تنوي تحرير JSON يدويًا أو تغذيته إلى جهة صارمة، مرّره عبر منسّق JSON للتأكد من صحته وتنسيقه المتّسق.
- احتفظ بتعليقات TOML على حدة
- لا يملك JSON صياغة للتعليقات، لذا تُسقَط تعليقات TOML التي تبدأ بـ # عند التحويل. إن كانت التعليقات توثيقًا مهمًا، احتفظ بملف TOML الأصلي في نظام التحكم بالإصدارات إلى جانب JSON المولَّد.
- استخدم مصفوفات الجداول للأقسام المكرّرة
- عندما يكون لديك أقسام متشابهة متعددة (خوادم، عمليات إعادة توجيه، ملفات ثنائية)، اكتبها كمصفوفات جداول ([[section]]) بدلًا من تكرار [section]. تُحوَّل إلى مصفوفة JSON نظيفة من الكائنات بدلًا من التسبّب بخطأ جدول مكرّر.
الأسئلة الشائعة
كيف أحوّل TOML إلى JSON عبر الإنترنت؟
ما هو TOML ولماذا نحوّله إلى JSON؟
كيف تُمثَّل تواريخ وأوقات TOML في JSON؟
هل تتعامل هذه الأداة مع Cargo.toml وpyproject.toml؟
كيف تُحوَّل جداول TOML ومصفوفات الجداول؟
ماذا يحدث للأعداد الصحيحة الكبيرة جدًا عند التحويل من TOML إلى JSON؟
هل تُرسَل بيانات TOML إلى أي خادم؟
هل يمكنني تحويل JSON مرة أخرى إلى TOML؟
كيف أحوّل TOML إلى JSON من سطر الأوامر؟
كيف أحوّل TOML إلى JSON في Python أو Rust أو Node.js؟
هل يحافظ المحوّل على ترتيب المفاتيح، وماذا عن التعليقات؟
هل هناك حدّ لحجم ملف إدخال TOML؟
أدوات ذات صلة
عرض جميع الأدوات →محوّل Base64 — ترميز وفك ترميز أونلاين
الترميز والتنسيق
رمّز وفك ترميز Base64 مجاناً أونلاين — محوّل فوري مع دعم UTF-8 والرموز التعبيرية. خصوصية 100% — يعمل في متصفّحك. جرّبه الآن.
محوّل Base64 إلى صورة أونلاين
الترميز والتنسيق
فك ترميز سلسلة Base64 أو عنوان URI للبيانات إلى صورة داخل متصفّحك. عاين واقرأ الأبعاد ونوع MIME ثم نزّل كـ PNG أو JPG أو GIF أو SVG. بلا رفع.
محوّل CSV إلى JSON
الترميز والتنسيق
حوّل CSV إلى JSON في متصفحك. RFC 4180، استنتاج الأنواع، صف العنوان، أمان الأعداد الكبيرة. خصوصية 100%.
محوّل .env إلى JSON
الترميز والتنسيق
الصق ملف .env واحصل على JSON فورًا. كلمات مرور قاعدة بياناتك ومفاتيح API لا تغادر متصفحك أبدًا — خاص 100٪، بلا رفع، محلّل dotenv مجاني.
فكّ كيانات HTML المجانية — فكّ تهريب الرموز
الترميز والتنسيق
فُكّ كيانات HTML وفُكّ تهريب HTML أونلاين — مجانًا، بلا تسجيل، 100% داخل متصفحك. يحوّل المراجع بالاسم والعشرية والسداسية إلى أحرف؛ لا يُرفع أبدًا.
ترميز كيانات HTML المجانية — تهريب الرموز
الترميز والتنسيق
رمّز كيانات HTML وهرّب الأحرف الخاصة (< > & " ') أونلاين — مجانًا، بلا تسجيل، 100% داخل متصفحك. خرج بالاسم أو العشري أو السداسي عشري؛ لا يُرفع أبدًا.