← العودة إلى المدونة

JSON مقابل TOML: مقارنة تنسيقات التكوين

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

Big JSON Team7 دقيقة للقراءةcomparison
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

7 دقيقة قراءة

نظرة عامة على JSON مقابل TOML

JSON و TOML هما تنسيقان شائعان للبيانات، لكن TOML (Tom's Obvious Minimal Language) صُمم خصيصًا لملفات التكوين مع التركيز على القابلية للقراءة البشرية.

مقارنة سريعة

| الميزة | JSON | TOML |

|--------|------|------|

| بناء الجملة | أقواس معقوفة | نمط INI |

| تعليقات | لا | نعم |

| قابلية القراءة | جيدة | ممتازة |

| امتداد الملف | .json | .toml |

| سرعة التحليل | أسرع | متوسطة |

| الاعتماد | عالمي | متزايد |

أمثلة بناء الجملة

تكوين JSON

{

"database": {

"server": "192.168.1.1",

"ports": [8001, 8002, 8003],

"connection_max": 5000,

"enabled": true

},

"servers": {

"alpha": {

"ip": "10.0.0.1",

"dc": "eqdc10"

},

"beta": {

"ip": "10.0.0.2",

"dc": "eqdc10"

}

}

}

تكوين TOML

# تكوين قاعدة البيانات

[database]

server = "192.168.1.1"

ports = [8001, 8002, 8003]

connection_max = 5000

enabled = true

# تكوينات الخوادم

[servers.alpha]

ip = "10.0.0.1"

dc = "eqdc10"

[servers.beta]

ip = "10.0.0.2"

dc = "eqdc10"

الاختلافات الرئيسية

التعليقات

JSON: لا يوجد دعم أصلي للتعليقات
{

"_comment": "استخدام حل بديل للتعليقات",

"setting": "value"

}

TOML: دعم كامل للتعليقات
# هذا تعليق مناسب

setting = "value" # التعليقات المضمنة تعمل أيضًا

قابلية القراءة

TOML يزيل الفوضى البصرية:

  • لا حاجة لأقواس معقوفة أو علامات اقتباس للمفاتيح
  • عناوين أقسام واضحة
  • بناء جملة جداول طبيعي
  • أفضل للهياكل المتداخلة

أنواع البيانات

كلاهما يدعم:

  • سلاسل نصية، أعداد صحيحة، أعداد عشرية، قيم منطقية
  • مصفوفات
  • هياكل متداخلة

إضافات TOML:

  • تواريخ وأوقات (أصلية)
  • جداول مضمنة

# تاريخ-وقت أصلي في TOML

created = 2026-02-14T10:30:00Z

# جدول مضمن

point = { x = 1, y = 2 }

متى تستخدم JSON

  • واجهات برمجة التطبيقات Web - معيار الصناعة
  • تبادل البيانات - دعم عالمي
  • JavaScript - تحليل أصلي
  • الأداء - تحليل أسرع
  • أدوات - المزيد من أدوات التحقق والتنسيق
  • متى تستخدم TOML

  • ملفات التكوين - أكثر قابلية للقراءة
  • مشاريع Rust - معيار Cargo.toml
  • تغليف Python - pyproject.toml
  • التحرير البشري - أسهل في الصيانة
  • التعليقات ضرورية - توثيق في التكوين
  • أمثلة التحويل

    TOML إلى JSON (Python)

    import json
    

    import tomli # Python 3.11+ لديه tomllib مدمج

    with open('config.toml', 'rb') as f:

    data = tomli.load(f)

    with open('config.json', 'w') as f:

    json.dump(data, f, indent=2)

    JSON إلى TOML (Python)

    import json
    

    import tomli_w

    with open('config.json') as f:

    data = json.load(f)

    with open('config.toml', 'wb') as f:

    tomli_w.dump(data, f)

    حالات الاستخدام الشائعة

    نقاط قوة JSON

    {
    

    "api_response": {

    "status": 200,

    "data": [

    {"id": 1, "name": "Item 1"},

    {"id": 2, "name": "Item 2"}

    ]

    }

    }

    نقاط قوة TOML

    # تكوين التطبيق
    

    [app]

    name = "MyApp"

    version = "1.0.0"

    debug = false

    [app.database]

    url = "postgresql://localhost/mydb"

    pool_size = 10

    [app.logging]

    level = "info"

    file = "/var/log/myapp.log"

    الأخطاء الشائعة

    ترتيب الجداول في TOML

    # خطأ - لا يمكن الإضافة إلى [fruit] بعد المصفوفة
    

    [fruit]

    name = "apple"

    [[fruit.varieties]] # مصفوفة من الجداول

    name = "red"

    [fruit] # خطأ! معرف بالفعل

    color = "red"

    # صحيح - حدد جميع مفاتيح الجدول أولاً

    [fruit]

    name = "apple"

    color = "red"

    [[fruit.varieties]]

    name = "red"

    دليل القرار

    اختر JSON عندما:
    • تبني واجهات برمجة تطبيقات ويب
    • تحتاج أقصى توافق
    • الأداء حاسم
    • تعمل مع JavaScript/المتصفحات
    • تولد البيانات برمجيًا

    اختر TOML عندما:
    • تكتب ملفات تكوين
    • القابلية للقراءة البشرية أولوية
    • التعليقات ضرورية
    • تعمل مع مشاريع Rust أو Python
    • التكوين يحتاج مراجعة التحكم في الإصدار

    أدوات شائعة

    أدوات JSON

    • jq (معالج سطر الأوامر)
    • كل لغات البرمجة
    • أدوات تنسيق عبر الإنترنت في كل مكان

    أدوات TOML

    • tomli/tomllib (Python)
    • toml crate (Rust)
    • TOML Language Support (VS Code)
    • أدوات التحقق من TOML عبر الإنترنت

    اعتماد النظام البيئي

    JSON: عالمي (1999+)
    • جميع متصفحات الويب
    • جميع اللغات الرئيسية
    • معيار REST API

    TOML: متزايد (2013+)
    • Rust: Cargo.toml
    • Python: pyproject.toml
    • مولد المواقع الثابتة Hugo
    • العديد من أدوات CLI

    الخلاصة

    JSON يهيمن على تبادل البيانات وواجهات برمجة التطبيقات، بينما TOML يتفوق في ملفات التكوين. تستخدم العديد من المشاريع الحديثة كليهما: JSON لبيانات وقت التشغيل و TOML للتكوين القابل للتحرير بواسطة الإنسان. اختر بناءً على حالة الاستخدام الخاصة بك: إذا كان البشر سيحررونه بشكل متكرر، فإن قابلية قراءة TOML تفوز؛ إذا كانت الآلات تولده، فإن عالمية JSON لا تُقهر.

    Share:

    مقالات ذات صلة

    Read in English