इस लेख में
TOML क्या है?
TOML (Tom's Obvious Minimal Language) एक कॉन्फ़िगरेशन फ़ाइल प्रारूप है जिसे पढ़ने और लिखने में आसान बनाने के लिए डिज़ाइन किया गया है। 2013 में Tom Preston-Werner (GitHub के सह-संस्थापक) द्वारा बनाया गया TOML, स्पष्ट रूप से एक हैश टेबल से मैप होता है, जिससे इसे किसी भी प्रोग्रामिंग भाषा में डेटा संरचनाओं में पार्स करना सीधा हो जाता है। इसका साफ़-सुथरा सिंटैक्स लचीलेपन के बजाय मानव पठनीयता को प्राथमिकता देता है।
YAML के विपरीत, जो इंडेंटेशन पर निर्भर है और इसमें कई अड़चनें हैं, या JSON के विपरीत, जिसमें टिप्पणियाँ और ट्रेलिंग कॉमा नहीं होते, TOML एक बीच का रास्ता देता है: स्पष्ट टाइपिंग (स्ट्रिंग, पूर्णांक, फ़्लोट, बूलियन, तिथियाँ), [ब्रैकेट] के साथ स्पष्ट टेबल सिंटैक्स, और इनलाइन टेबल व सरणियों का समर्थन — वह भी उस अस्पष्टता के बिना जो अन्य कॉन्फ़िग प्रारूपों को परेशान करती है।
TOML to JSON रूपांतरण कैसे काम करता है
TOML और JSON के बीच रूपांतरण में स्रोत प्रारूप को एक मध्यवर्ती डेटा संरचना में पार्स करना और उसे लक्ष्य प्रारूप में क्रमबद्ध करना शामिल है। हर TOML प्रकार सीधे एक JSON समकक्ष से मैप होता है।
- कुंजी-मान जोड़े — TOML का key = value सिंटैक्स JSON ऑब्जेक्ट गुणों से मैप होता है; server.port जैसी डॉट-युक्त कुंजियाँ नेस्टेड ऑब्जेक्ट बन जाती हैं
- टेबल और सरणियाँ — TOML के [table] हेडर JSON ऑब्जेक्ट बन जाते हैं, और [[array-of-tables]] ऑब्जेक्ट की JSON सरणियाँ बन जाते हैं, जिससे पदानुक्रमिक संरचना बनी रहती है
- टाइप सिस्टम — TOML के मूल प्रकार (string, integer, float, boolean, datetime) JSON प्रिमिटिव से मैप होते हैं; datetime मानों को ISO 8601 स्ट्रिंग के रूप में क्रमबद्ध किया जाता है क्योंकि JSON में कोई तिथि प्रकार नहीं होता
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
TOML को JSON में बदलें →TOML का उपयोग कहाँ होता है
TOML को इसकी स्पष्टता और सख़्ती के कारण कई प्रमुख इकोसिस्टमों ने पसंदीदा कॉन्फ़िगरेशन प्रारूप के रूप में अपनाया है।
- Rust इकोसिस्टम — Cargo.toml हर Rust प्रोजेक्ट के लिए पैकेज मैनिफ़ेस्ट है, जो निर्भरताओं, बिल्ड सेटिंग्स और मेटाडेटा को ऐसे प्रारूप में परिभाषित करता है जो मानव-संपादन योग्य और मशीन-पार्स योग्य दोनों है
- Python पैकेजिंग — pyproject.toml (PEP 518/621) Python प्रोजेक्ट कॉन्फ़िगरेशन का मानक बन गया है, जो setup.py और setup.cfg को एक साफ़-सुथरे, घोषणात्मक प्रारूप से बदल देता है
- स्टैटिक साइट जनरेटर — Hugo साइट कॉन्फ़िगरेशन के लिए config.toml का उपयोग करता है, और कई अन्य टूल (Deno, InfluxDB, Netlify) अपनी कॉन्फ़िगरेशन फ़ाइलों के लिए TOML का उपयोग करते हैं
अक्सर पूछे जाने वाले प्रश्न
कॉन्फ़िगरेशन के लिए TOML, YAML और JSON में क्या अंतर हैं?
JSON सबसे सरल है पर इसमें टिप्पणियाँ और ट्रेलिंग कॉमा नहीं होते, जिससे यह मानव-संपादित कॉन्फ़िग फ़ाइलों के लिए असुविधाजनक हो जाता है। YAML टिप्पणियों का समर्थन करता है और देखने में साफ़ है पर इसका इंडेंटेशन-आधारित सिंटैक्स सूक्ष्म बग्स (Norway समस्या, अंतर्निहित टाइप कोर्शन) की ओर ले जाता है। TOML टिप्पणियों का समर्थन करता है, इसमें स्पष्ट टाइपिंग होती है, और यह इंडेंटेशन-आधारित पार्सिंग से बचता है — जिससे यह उन कॉन्फ़िगरेशन फ़ाइलों के लिए सबसे सुरक्षित विकल्प बन जाता है जिन्हें मनुष्य सीधे संपादित करते हैं।
TOML की सीमाएँ क्या हैं?
गहराई से नेस्ट की गई संरचनाओं के लिए TOML वाचाल हो सकता है क्योंकि हर नेस्टिंग स्तर के लिए अपना [table.subtable] हेडर चाहिए। इसमें null प्रकार भी नहीं होता (JSON और YAML के विपरीत), जिसका अर्थ है कि अनुपस्थित मानों को कुंजी को पूरी तरह से हटाकर संभालना पड़ता है। कई नेस्टिंग स्तरों वाले जटिल डेटा के लिए, JSON या YAML अधिक संक्षिप्त हो सकते हैं। TOML सपाट से मध्यम रूप से नेस्ट किए गए कॉन्फ़िगरेशन के लिए अनुकूलित है, न कि गहरे डेटा पदानुक्रमों के लिए।
TOML तिथियों और समय को कैसे संभालता है?
TOML में RFC 3339 के अनुसार तिथि और समय प्रकारों का प्रथम-श्रेणी समर्थन है: ऑफ़सेट datetime (2024-01-15T10:30:00Z), स्थानीय datetime (2024-01-15T10:30:00), स्थानीय तिथि (2024-01-15), और स्थानीय समय (10:30:00)। JSON में बदलते समय, इन्हें ISO 8601 स्ट्रिंग के रूप में क्रमबद्ध किया जाता है क्योंकि JSON में कोई मूल तिथि प्रकार नहीं होता। यह मूल तिथि समर्थन JSON और YAML दोनों की तुलना में TOML के लाभों में से एक है।