कॉन्फ़िगर किए जा सकने वाले इंडेंटेशन और कॉम्पैक्ट-मोड आउटपुट के साथ TOML दस्तावेज़ों को JSON में बदलें।
कॉन्फ़िगर किए जा सकने वाले इंडेंटेशन और कॉम्पैक्ट-मोड आउटपुट के साथ TOML दस्तावेज़ों को JSON में बदलें। कॉन्फ़िगर किए जा सकने वाले इंडेंटेशन और कॉम्पैक्ट-मोड आउटपुट के साथ TOML दस्तावेज़ों को JSON में बदलें।
आउटपुट
पृष्ठभूमि
आप TOML को JSON के रूप में क्यों चाह सकते हैं
JSON वेब की सर्वव्यापी भाषा है: हर API इसे समझता है, हर
एडिटर इसे हाइलाइट कर सकता है, और हर भाषा के पास इसका
पार्सर इसकी मानक लाइब्रेरी में होता है। TOML मनुष्य-संपादित
कॉन्फ़िगरेशन में उत्कृष्ट है लेकिन रनटाइम डेटा एक्सचेंज
प्रारूप के रूप में उतना ही व्यापक रूप से समर्थित नहीं है। जब
आपको किसी TOML कॉन्फ़िग को केवल JSON लेने वाले उपकरण
(वेब प्लेग्राउंड, स्कीमा वैलिडेटर्स, कोड जनरेटर्स, आदि) में
भेजना हो, तो एक विश्वसनीय TOML-से-JSON कन्वर्टर काम
बचा लेता है।
रूपांतरण अधिकांश रूप से निष्कोटि (lossless) है क्योंकि दोनों
प्रारूप उन्हीं प्राइमिटिव्स को दर्शाने के लिए पर्याप्त
अभिव्यक्तिशील हैं। कुछ TOML-विशिष्ट प्रकार (मल्टी-लाइन
स्ट्रिंग्स, तारीख़ें) सादी स्ट्रिंग्स बन जाते हैं; कुछ
JSON-विशिष्ट मान (null) JSON लिटरल null बन जाते हैं,
जिसका TOML में कोई नेटिव समकक्ष नहीं है।
जानने लायक विशेषताएँ
कन्वर्टर एक प्रीटी-प्रिंट टॉगल (2/4-स्पेस इंडेंटेशन के साथ)
और एक कॉम्पैक्ट मोड (एकल पंक्ति) प्रदान करता है। बहुत बड़ी
कॉन्फ़िग फ़ाइलों के लिए, कॉम्पैक्ट आउटपुट को किसी curl
अनुरोध बॉडी में पेस्ट करना कहीं आसान होता है। स्वैप बटन
JSON आउटपुट को वापस इनपुट बॉक्स में ले जाता है ताकि आप इसे
फिर से संपादित और फिर TOML के रूप में री-एक्सपोर्ट कर सकें।
कार्यप्रवाह टिप्स
रूपांतरण के बाद, इसे किसी डाउनस्ट्रीम उपकरण पर भेजने से
पहले किसी स्कीमा वैलिडेटर (ajv, jsonschema) से JSON को
मान्य करें। TOML पार्सर सख्त है: यह अंकों से शुरू होने वाले
अनकोटेड स्केलर्स, कमेंट्स वाली इनलाइन टेबल्स, और अन्य
सामान्य गलतियों को अस्वीकार कर देगा। स्रोत दस्तावेज़ को
ठीक करने के लिए त्रुटि संदेशों का उपयोग करें, JSON का नहीं।
व्यावहारिक उदाहरण
मान लें आप pyproject.toml का एक स्निपेट रखते हैं जो [tool.beetools] के तहत अपने टूल का रनटाइम कॉन्फ़िगरेशन सूचीबद्ध करता है। उसी कॉन्फ़िगरेशन को केवल JSON स्वीकार करने वाली JavaScript बिल्ड पाइपलाइन में भेजने के लिए, स्निपेट को इस कन्वर्टर से गुज़ारें। आउटपुट टेबल पदानुक्रम को संरक्षित करता है, इसलिए [tool.beetools.cache] जैसा नेस्टेड ब्लॉक { "tool": { "beetools": { "cache": { ... } } } } बन जाता है। डॉटेड कुंजियाँ बाहर जाते समय नेस्टेड ऑब्जेक्ट्स में सिमट जाती हैं, जिस तरह TOML पार्सर ने शुरू में उन्हें बनाया था। एक बार JSON मिल जाने पर, इसे डाउनस्ट्रीम भेजने से पहले ajv या jsonschema से मान्य करें -- कन्वर्टर केवल सिंटैक्स का अनुवाद करता है।
अक्सर पूछे जाने वाले प्रश्न
क्या कन्वर्टर TOML 1.0 सुविधाओं का समर्थन करता है?
हाँ। कन्वर्टर TOML 1.0 को पार्स करता है, जिसमें टेबल्स की सरणियाँ (`[[name]]`), इनलाइन टेबल्स (`{ key = "value" }`), और डॉटेड कुंजियाँ (`a.b.c`) शामिल हैं।
TOML तारीख़ें JSON में कैसे उत्सर्जित होती हैं?
बिना समय वाली तारीख़ें `YYYY-MM-DD` रूप में JSON स्ट्रिंग्स बन जाती हैं। datetime `YYYY-MM-DDTHH:MM:SS[.fraction][Z|+offset]` बन जाते हैं। प्राप्त करने वाला JSON उपभोक्ता उन्हें अपनी भाषा की तारीख़ लाइब्रेरी से पार्स कर सकता है।
TOML मल्टी-लाइन स्ट्रिंग्स का क्या?
वे एम्बेडेड न्यूलाइन वर्णों के साथ नियमित JSON स्ट्रिंग्स के रूप में उत्सर्जित होती हैं। JSON सटीक लिटरल-शैली को संरक्षित नहीं कर सकता, लेकिन पार्स किया गया मान समान होता है।
क्या कन्वर्टर डॉटेड कुंजियाँ संभाल सकता है?
हाँ। `a.b.c = 1` बन जाता है `{ "a": { "b": { "c": 1 } } }`। कन्वर्टर हर डॉटेड कुंजी को नेस्टेड ऑब्जेक्ट्स में विस्तारित करता है।
क्या कन्वर्टर अमान्य TOML को अस्वीकार करेगा?
हाँ। पार्सर पहले अमान्य टोकन पर लाइन/कॉलम संकेतक के साथ एक त्रुटि उठाता है। स्रोत TOML को ठीक करें और फिर कोशिश करें।
क्या मेरा TOML अपलोड किया जाता है?
नहीं। पार्सिंग सार्वजनिक/एसेट्स में बंडल किए गए BSD-3 smol-toml लाइब्रेरी के माध्यम से स्थानीय रूप से होती है; कुछ भी ब्राउज़र से बाहर नहीं जाता।