आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप INI को JSON में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
INI से JSON
नतीजा एक ही बाहरी ऑब्जेक्ट है। हर सेक्शन हेडर अपनी एक कुंजी बनता है, जिसके भीतर उस सेक्शन की सारी keys-values एक अलग ऑब्जेक्ट की तरह बैठती हैं। किसी सेक्शन हेडर से पहले लिखी गई keys शीर्ष स्तर पर सीधे बैठती हैं, किसी अलग रैपर के भीतर नहीं।
यही पूरा ढाँचागत बदलाव है, क्योंकि INI फ़ाइल में इसके अलावा बदलने को कुछ बचता ही नहीं। असली दिलचस्पी ढाँचे में नहीं, मानों में है — वे इतनी सीधी तरह पार नहीं होते।
बराबर के चिह्न के बाद जो भी लिखा है, वह INI में सिर्फ़ अक्षर हैं — यहाँ का पाठक true और false को बूलियन बनाता है, संख्या जैसी दिखने वाली हर चीज़ को JSON संख्या, और बाक़ी सबको स्ट्रिंग रहने देता है।
ज़्यादातर सेटिंग के लिए यह सही फ़ैसला है: पोर्ट 8080 सीधे संख्या बनकर आता है, "8080" स्ट्रिंग नहीं। दिक़्क़त वहाँ है जहाँ अंक कोई पहचानकर्ता है, कोई मात्रा नहीं।
007 लिखा हुआ मान संख्या 7 बन जाता है। फ़ाइल मोड की तरह लिखा गया 0755 संख्या 755 बन जाता है — यह एक अलग मोड है और वैसे ही लागू भी होगा।
यह चुपचाप होता है, कोई चेतावनी नहीं आती। अगर किसी कुंजी में पहचानकर्ता या सीरियल नंबर है, तो नतीजे में वह कुंजी बदलाव से पहले ही जाँच लेनी चाहिए।
0x1F लिखा गया मान संख्या 31 बनकर निकलता है — मान में सही, पर हर उस लॉग लाइन में ग़लत जो उसे वापस छापती है और हेक्साडेसिमल रूप की उम्मीद रखती है।
यह उसी नियम का नतीजा है जो 007 और 0755 के साथ होता है: पाठक के लिए हर संख्या-जैसी चीज़ एक जैसी है, चाहे वह किसी और आधार में लिखी गई हो।
Windows की INI फ़ाइलें और php.ini अक्सर true और false की जगह On और Off इस्तेमाल करते हैं, और यहाँ का पाठक उन्हें बूलियन नहीं मानता — वे स्ट्रिंग "On" और "Off" बनकर ही निकलते हैं।
यही yes और no पर भी लागू होता है, और फ़्लैग की तरह इस्तेमाल हुए 1 और 0 संख्या ही बनते हैं, बूलियन नहीं। किसे सच माना जाए, यह तय करना उसी कोड का काम है जो JSON को आगे पढ़ता है।
कुंजियों का क्रम लगभग हर जगह बचा रहता है, सिवाय एक अपवाद के: पूर्णांक जैसी कुंजियाँ JavaScript ऑब्जेक्ट में हमेशा आगे और चढ़ते क्रम में आती हैं। तो 10, 2, name के क्रम में लिखा सेक्शन यहाँ 2, 10, name बनकर निकलता है।
सर्वर सूची या क्रम में लगे नियमों जैसी फ़ाइलें, जो संख्याओं को कुंजी की तरह इस्तेमाल करती हैं, इसी वजह से फिर से क्रमबद्ध होकर आती हैं। जहाँ क्रम का मतलब है, वहाँ वह सेक्शन JSON ऐरे होना चाहता है, ऑब्जेक्ट नहीं।
सेमीकोलन या हैश से शुरू होने वाली पंक्तियाँ पढ़ते समय ही छोड़ दी जाती हैं, और JSON में उन्हें लिखने के लिए कोई जगह भी नहीं है — RFC 8259 किसी टिप्पणी वाक्य-रचना को परिभाषित ही नहीं करता।
किसी सेटिंग्स फ़ाइल में अक्सर यही सबसे बड़ा नुक़सान होता है। यह बताने वाली पंक्ति कि कोई मान किसी ख़ास ग्राहक के लिए क्यों बदला गया था, वह पार नहीं होती — मूल INI फ़ाइल को वर्ज़न कंट्रोल में साथ रखना ही सही तरीक़ा है।
INI का कोई एक तय मानक नहीं है, इसलिए दोहराए गए सेक्शन हेडर को लेकर हर लाइब्रेरी अपने हिसाब से चलती है। यहाँ का पाठक हर बार हेडर मिलने पर एक नया ख़ाली सेक्शन शुरू करता है, तो दो बार आए [logging] में से सिर्फ़ दूसरे की keys बचती हैं।
यह पैटर्न अक्सर तब दिखता है जब कॉन्फ़िग कई फ़ाइलों को जोड़कर बनाई जाती है — एक बेस फ़ाइल और उसके ऊपर जोड़ी गई एक environment फ़ाइल। बदलाव से पहले स्रोत में दोहराए गए हेडर खोज लेना ही बचाव है।
INI पढ़ना और JSON लिखना, दोनों इसी पेज पर चलने वाला सादा जावास्क्रिप्ट है, कहीं अपलोड नहीं होता। यह इस जोड़ी के लिए ख़ास मायने रखता है, क्योंकि INI फ़ाइलें अक्सर डेटाबेस पासवर्ड और API कुंजियाँ रखती हैं।
मुफ़्त स्तर 100 MB तक स्वीकार करता है, जो किसी कॉन्फ़िग फ़ाइल के लिए कहीं ज़्यादा है। असली सीमा आकार नहीं, समीक्षा है — JSON बनने के बाद संख्या वाली हर कुंजी एक बार ज़रूर देख लीजिए।
| INI | JSON | |
|---|---|---|
| पूरा नाम | INI कॉन्फ़िगरेशन | JavaScript Object Notation |
| फ़ाइल एक्सटेंशन | .ini, .cfg, .conf | .json |
| मीडिया टाइप | text/plain | application/json |
| पहली बार प्रकाशित | 1985 | 2001 |
| विनिर्देश | — | RFC 8259 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | पुराना, फिर भी हर जगह पढ़ा जाता है | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | हर ब्राउज़र |
| इसकी जगह विचारणीय | TOML, YAML | XML, YAML, NDJSON |
टिप्पणियाँ साथ नहीं जातीं। INI में फ़ाइल के साथ समझाइश लिखी जा सकती है और JSON में उसके लिए कोई वाक्य-रचना ही नहीं, इसलिए हर समझाने वाली पंक्ति छूट जाती है — और चोट ठीक उन्हीं फ़ाइलों पर पड़ती है जिन पर टिप्पणियाँ लिखी जाती हैं: वह कॉन्फ़िगरेशन जिसे किसी और को सँभालना है।
JSON को हर मौजूदा ब्राउज़र खोल लेता है। INI को इतने भी नहीं। अगर फ़ाइल किसी वेब पेज या किसी फ़ॉर्म तक जा रही है, तो आम तौर पर इस कन्वर्ज़न की पूरी वजह यही है।
INI 1985 का है और अब मुश्किल से ही इस्तेमाल होता है। JSON वह है जो आज के प्रोग्राम लिखते हैं, इसलिए यह कन्वर्ज़न पढ़े जाते रहने का भी सवाल है।
Visual Studio Code INI और JSON — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
दोनों का निशाना अलग काम है: INI का एडिटिंग पर, JSON का प्रोग्रामों के बीच डेटा ले जाना और वेब पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
JSON 2001 से चला आ रहा है, और RFC 8259 में तय किया गया है। Visual Studio Code, jq और Postman इस फ़ॉर्मेट को पढ़ लेते है।
INI 1985 में आया और JSON 2001 में। किसी को सौंपने के लिए आम तौर पर पुराना वाला ज़्यादा सुरक्षित रहता है; नया वाला वही काम कम बाइट में कर देता है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
नहीं। JSON वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।
टिप्पणियाँ साथ नहीं जातीं। INI में फ़ाइल के साथ समझाइश लिखी जा सकती है और JSON में उसके लिए कोई वाक्य-रचना ही नहीं, इसलिए हर समझाने वाली पंक्ति छूट जाती है — और चोट ठीक उन्हीं फ़ाइलों पर पड़ती है जिन पर टिप्पणियाँ लिखी जाती हैं: वह कॉन्फ़िगरेशन जिसे किसी और को सँभालना है।