आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप JSON को TOML में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
JSON से TOML
JSON में कोई comment नहीं है। यह specification में लिखा है, कोई चूक नहीं, और यही वजह है JSON में लिखी ज़्यादातर configuration बनाए रखने में असुविधाजनक होती है। TOML, जो जनवरी 2021 में 1.0 पर पहुँचा और अब Cargo, pyproject.toml और Hugo की config फ़ॉर्मेट है, comments रखता है।
दूसरी वजह flatness है। तीन-level गहरी JSON config braces की तीन परतें हैं; TOML में वही चीज़ एक header line है — [server.tls.client] — और उसके नीचे keys की एक छोटी सूची।
TOML दस्तावेज़ एक table है। यह किसी array से शुरू नहीं हो सकता जैसा JSON दस्तावेज़ कर सकता है। रूपांतरण असफल होने की बजाय इसे संभालता है — जो value object नहीं है वह items नाम की key के भीतर लपेट दी जाती है।
फ़ाइल तब valid रहती है, और यह जवाब नहीं, placeholder है। कोई converter नहीं जान सकता कि फ़ाइल पढ़ने वाला टूल उस list को dependencies कहलाना चाहता है या servers।
यह हर बार जाँचने लायक़ विफलता है। TOML के पास कोई null literal नहीं है, और writer एक नहीं गढ़ता — जिस key का JSON value null था वह बस लिखी नहीं जाती। {"a": null} बदलिए तो आउटपुट ख़ाली फ़ाइल है।
यह मायने रखता है या नहीं यह पूरी तरह उस टूल पर निर्भर करता है जो नतीजा पढ़ेगा। कई config parser अनुपस्थित key और null key को एक जैसा मानते हैं — दोनों के लिए डिफ़ॉल्ट पर वापस जाते हैं।
यह वह हिस्सा है जो अक्सर उन्हें चौंकाता है जो सोचते हैं TOML JSON से कमज़ोर फ़ॉर्मेट है। Records की सूची उसी table header को दोहराकर व्यक्त की जाती है — [[servers]] तीन बार लिखने से तीन servers मिलते हैं।
सदस्यों को एक जैसा मेल खाना ज़रूरी नहीं। पहला object जिसमें id और name है और दूसरा जो region जोड़ता है, बिना शिकायत के convert होता है, और TOML valid रहती है।
TOML table header उसके नीचे लिखी हर चीज़ का मालिक होता है जब तक अगला header न आए। तो [server] के बाद रखी सादी key server की मानी जाएगी। इसलिए writer हर शीर्ष scalar को पहले table header से ऊपर उठाता है।
आउटपुट इसलिए आपकी JSON के क्रम में नहीं है, और यह हो भी नहीं सकता। यह इकलौता reordering है जो अर्थ बचाता है; कोई और reordering किसी key को ग़लत table में डाल देगा।
JSON की चार levels एक ही header line बनती हैं — {"a":{"b":{"c":{"d":1}}}} [a.b.c] बनकर convert होता है, नीचे d = 1 के साथ। TOML गहराई header में व्यक्त करता है, indentation में नहीं।
इसकी एक सीमा भी है जो validity का नहीं, ruचि का सवाल है — [build.targets.linux.arm64.flags] जैसा header legal है और पढ़ने में कोई मज़ा नहीं। अगर बदली फ़ाइल में इतने लंबे headers हों, यह एक संकेत है।
आउटपुट में कोई comment नहीं है, क्योंकि input के पास रखने को कहीं जगह नहीं थी। यह converter की कमी नहीं — यही वजह है JSON रखना पहले सार्थक था।
जो इसे रूपांतरण के बाद पहले पाँच मिनट सबसे क़ीमती बनाता है। TOML फ़ाइल इस configuration के बारे में institutional knowledge रख सकती है — कौन-सी values बदलना सुरक्षित है, यह लिखने का यही एक पल है जो कुछ नहीं खर्चता।
TOML के पास चार date और time types हैं। JSON के पास कोई नहीं — RFC 8259 आपको strings, numbers, booleans, null, arrays और objects देता है, और हर timestamp पहले प्रकार का है।
तो "2024-01-01T00:00:00Z" जैसी JSON value quoted TOML string के रूप में लिखी जाती है, जो सही है और वह नहीं जो फ़ॉर्मेट व्यक्त कर सकता था। अगर पढ़ने वाले टूल को असली date-time चाहिए, उन लाइनों से हाथ से quotation marks हटा दीजिए।
सबसे सस्ती जाँच है round trip — TOML को वापस JSON में बदलिए और शुरुआती फ़ाइल से तुलना कीजिए। जिन keys में null था वे गायब होंगी और और कुछ अलग नहीं होना चाहिए।
दूसरी जाँच है टूल ख़ुद। Cargo, Hugo और ज़्यादातर Python packaging tools तुरंत बता देंगे कि दस्तावेज़ parse होता है या नहीं।
इसी ब्राउज़र टैब में, आपके अपने processor पर। कोई request फ़ाइल कहीं नहीं ले जाता, कोई अकाउंट नहीं, कोई कतार नहीं, और मुफ़्त तह 100 MB तक की फ़ाइलें स्वीकार करती है।
यह config के लिए सामान्य से ज़्यादा मायने रखता है। एक JSON configuration फ़ाइल ठीक वही चीज़ है जो internal hostnames, bucket names, service accounts रखती है।
| JSON | TOML | |
|---|---|---|
| पूरा नाम | JavaScript Object Notation | Tom's Obvious Minimal Language |
| फ़ाइल एक्सटेंशन | .json | .toml |
| मीडिया टाइप | application/json | application/toml |
| पहली बार प्रकाशित | 2001 | 2013 |
| विनिर्देश | RFC 8259 | TOML 1.0 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | हर ब्राउज़र | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | XML, YAML, NDJSON | YAML, INI |
कुछ नहीं खोता। JSON और TOML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।
TOML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।
Visual Studio Code JSON और TOML — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
दोनों का निशाना अलग काम है: JSON का प्रोग्रामों के बीच डेटा ले जाना और वेब पर, TOML का एडिटिंग पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
JSON 2001 में आया। यह RFC 8259 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
TOML 2013 से चला आ रहा है, और TOML 1.0 में तय किया गया है। Visual Studio Code इस फ़ॉर्मेट को पढ़ लेता है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
नहीं। TOML वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।
TOML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।
कुछ नहीं खोता। JSON और TOML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।