इसे कैसे इस्तेमाल करें : JSON सजाएँ
पार्सर यहीं, हाथ से लिखा गया है, ब्राउज़र से उधार नहीं लिया गया: क्योंकि ब्राउज़र का ग़लती वाला संदेश किसी स्पेसिफ़िकेशन ने तय ही नहीं किया, और वह ब्राउज़र दर ब्राउज़र अलग होता है। यह वाला पंक्ति, कॉलम और यह भी बताता है कि वहाँ क्या चाहिए था, हर जगह एक जैसा।
किसी प्रोग्राम ने JSON फ़ाइल मना कर दी, और ग़लती वाला संदेश कुछ बताता ही नहीं: जो लोग किसी सेटिंग फ़ाइल या डेटा एक्सपोर्ट से जूझते हैं, उनका रोज़ का हाल यही है। इसलिए जाँचने वाले औज़ार का पहला काम यह बताना है कि ठीक-ठीक कहाँ, और वहाँ क्या चाहिए था।
इसी वजह से पार्सर यहीं लिखा गया है, ब्राउज़र से उधार नहीं लिया गया। भाषा का मानक यह तय करता है कि ब्राउज़र किस किस्म की चूक उठाए, उसका पाठ नहीं: Firefox पंक्ति और कॉलम बताता है, Chrome बाइटों में जगह बताता है, Safari इनमें से कुछ भी नहीं बताता। इसलिए जो औज़ार वह संदेश कॉपी करता है वह हर आदमी के ब्राउज़र के हिसाब से अलग नतीजा देता है। हमारा वाला अपनी पंक्तियाँ और अपने कॉलम ख़ुद गिनता है।
और वह तीन चीज़ें देख लेता है जिन्हें ब्राउज़र का फ़ंक्शन चुपचाप निगल जाता है। दोहरी कुंजियाँ: मानक कहता है कि वे अलग-अलग “होनी चाहिए” और जिस सॉफ़्टवेयर को दोहरी कुंजियाँ मिल जाएँ उसका बर्ताव कुछ भी हो सकता है; असल में आख़िरी वाली पहली को मिटा देती है, और एक जानकारी बिना कुछ कहे ग़ायब हो जाती है। अकेले रह गए यूनिकोड के आधे अक्षर, जो किसी अक्षर को दर्ज नहीं करते और आगे आधे पढ़ने वालों को गिरा देते हैं। और फ़ाइल के आगे लगा बाइट-ऑर्डर मार्क, जिसे जोड़ने से मानक मना करता है।
इसे कैसे इस्तेमाल करें
- अपना JSON चिपकाएँ। वह आपके डिवाइस से बाहर नहीं जाता, और किसी डेटा एक्सपोर्ट या पहचान-अंक रखने वाली सेटिंग फ़ाइल के लिए यह मायने रखता है।
- इंडेंट चुनें, और अगर आगे दो फ़ाइलें मिलाकर देखनी हैं तो कुंजियों का क्रम भी।
- JSON ग़लत हो तो पंक्ति, कॉलम और जो चिह्न चाहिए था वह पढ़ें। सही हो तो चेतावनियों की तालिका पढ़ें: दोहरी कुंजियाँ वहीं छिपी होती हैं।
चलने वाले फ़ॉर्मैट
JSON, जैसा मानक उसे तय करता है: न कोई टिप्पणी, न बंद होते मझले कोष्ठक से पहले फ़ालतू कॉमा, न बिना कोट वाली कुंजी। ये तीनों चूकें आम हैं और औज़ार उन्हें नाम लेकर मना कर देता है, क्योंकि कोई प्रोग्राम भी उन्हें मना ही करेगा।
JSON फ़ॉर्मैट वाली लिखाई
400,000 अक्षरों तक। नतीजा .json में डाउनलोड हो जाता है या एक क्लिक में कॉपी हो जाता है।
इसकी सीमाएँ
औज़ार मानक लगाता है, कुछ प्रोग्रामों वाली छूट के बिना
टिप्पणियाँ, फ़ालतू कॉमा और बिना कोट वाली कुंजियाँ कई डेवलपर औज़ार मान लेते हैं, पर वे JSON हैं ही नहीं: मानक उनकी कोई गुंजाइश नहीं रखता, और जो प्रोग्राम आपकी फ़ाइल मना करता है वह सही है। हम भी उन्हें नहीं लेते, क्योंकि ढीला जाँचने वाला औज़ार आपको यह भरम दे जाता कि आपकी फ़ाइल कहीं और भी चल जाएगी।
दोहरी कुंजियाँ बताई जाती हैं, आपकी ओर से कभी सुधारी नहीं जातीं
मानक लिखता है कि किसी ऑब्जेक्ट के नाम अलग-अलग होने चाहिए, और ऐसा न हो तो जिस सॉफ़्टवेयर को यह डेटा मिलता है उसका बर्ताव कुछ भी हो सकता है। असल में लगभग सारे सॉफ़्टवेयर आख़िरी क़ीमत रखते हैं: एक जानकारी बिना कुछ कहे ग़ायब हो जाती है। औज़ार उन्हें उनके रास्ते और उनकी पंक्ति के साथ गिना देता है, पर सजाई हुई फ़ाइल वही चुनाव दिखाती है जो सब करते हैं, यानी आख़िरी क़ीमत, क्योंकि इसका उल्टा एक झटका होता।
बहुत बड़ी संख्या अपने अंक खो सकती है, और इसमें हमारा हाथ नहीं
ब्राउज़र की भाषा पूर्णांकों को ठीक-ठीक सिर्फ़ करीब नौ हज़ार अरब अरब तक सँभाल सकती है। इससे बड़ी कोई पहचान संख्या JSON में लिखी हो तो पढ़ते ही अपने अंक खो देती है, उस हर औज़ार में जो इसी भाषा से गुज़रता है। इसीलिए गंभीर इंटरफ़ेस बड़ी पहचान संख्याओं को कोट के अंदर लड़ी की तरह ढोते हैं, और आपको किसी फ़ाइल में ऐसी संख्या नंगी दिखे तो दिक़्क़त हम तक पहुँचने से पहले ही मौजूद थी।
कुंजियों का क्रम बचा रहता है, सिवाय उनके जो संख्या जैसी दिखती हैं
JavaScript का ऑब्जेक्ट उन कुंजियों को हमेशा सबसे पहले रखता है जो पूर्णांक की तरह लिखी होती हैं, बढ़ते क्रम में, चाहे मूल फ़ाइल में उनकी जगह कहीं भी रही हो। यह भाषा का नियम है, हमारा कोई चुनाव नहीं, और इसी भाषा से गुज़रने वाला कोई औज़ार इससे बच नहीं सकता। जिस ऑब्जेक्ट की कुंजियाँ “10”, “2”, “1” हों उसका मूल क्रम इसलिए चला जाता है। इसे कह देना चुप रह जाने से बेहतर था।
इस औज़ार के बारे में सवाल
क्या मेरा डेटा कहीं भेजा जाता है?
नहीं, और यहाँ यह कहीं और से ज़्यादा मायने रखता है: JSON फ़ॉर्मैट वाली सेटिंग फ़ाइल में अक्सर पहचान-अंक, अंदरूनी पते और कभी-कभी पहुँच की चाबियाँ होती हैं। तीस सेकंड में जाँच लें: F12 कुंजी से इंस्पेक्टर खोलें, “Network” वाला टैब खोलें, सूची ख़ाली कर दें, फिर अपना JSON चिपकाएँ और जाँचें। एक भी पंक्ति नहीं आती। अपना इंटरनेट काटकर दोबारा करके देखें।
टिप्पणियों वाला मेरा JSON मना क्यों हो जाता है?
क्योंकि वह JSON है ही नहीं। मानक में किसी टिप्पणी की कोई गुंजाइश नहीं है, और उसे बनाने वाले ने बताया है कि उन्होंने टिप्पणियाँ जानबूझकर हटाई थीं। कई डेवलपर औज़ार सुविधा के लिए उन्हें ले लेते हैं, और उलझन इसी से बनी रहती है: आपकी फ़ाइल आपके यहाँ चल जाती है और असली इस्तेमाल में गिर जाती है। हम उसी वजह से मना करते हैं जिस वजह से जाँचने वाले औज़ार को मना करना चाहिए: आपको यह सच बताने के लिए कि आपकी फ़ाइल असल में क्या है।
कुंजियों को क्रम में लगाना किस काम आता है?
मिलाकर देखने के। एक ही डेटा को दो अलग प्रोग्राम अक्सर कुंजियों के अलग-अलग क्रम में बाहर निकालते हैं: तब सीधा मिलान सैकड़ों झूठे फ़र्क़ दिखा देता है। दोनों को क्रम में लगाएँ, फिर उन्हें इसी कोने के “दो लिखाइयों को मिलाकर देखें” औज़ार में चिपका दें: सिर्फ़ असली फ़र्क़ बचेंगे। इस पन्ने का सबसे काम का नुस्ख़ा यही है।
आप दोहरी कुंजियों की बात करते हैं: क्या वे सचमुच चलती हैं?
मानक लिखता है कि किसी ऑब्जेक्ट के नाम अलग-अलग “होने चाहिए”, और ऐसा न हो तो डेटा पाने वाले सॉफ़्टवेयर का बर्ताव कुछ भी हो सकता है। यानी वे न मना हैं, न महफ़ूज़। असल में लगभग सारे सॉफ़्टवेयर आख़िरी क़ीमत रखते हैं और पहली को बिना कुछ कहे फेंक देते हैं: एक ही ऑब्जेक्ट में “price” कुंजी दो बार हो, तो दोनों दामों में से एक पहले ही मिट चुका है। यह ठीक वैसी दिक़्क़त है जिसे लोग दो घंटे तक ढूँढ़ते रहते हैं, और इसीलिए हम इसे बता देते हैं।
सजाने के बाद मेरी उन्नीस अंकों की पहचान संख्या बदल जाती है।
हाँ, और इसमें हमारा हाथ नहीं: यह उस भाषा की सीमा है जो सारे ब्राउज़र इस्तेमाल करते हैं, और जो पूर्णांकों को ठीक-ठीक सिर्फ़ करीब नौ हज़ार अरब अरब तक सँभालती है। उससे ऊपर आख़िरी अंक पढ़ते ही बदल जाते हैं, उस हर औज़ार में जो इसी भाषा से गुज़रता है। इसीलिए गंभीर इंटरफ़ेस बड़ी पहचान संख्याओं को कोट के अंदर, लड़ी की तरह ढोते हैं। आपकी संख्या फ़ाइल में नंगी है, तो दिक़्क़त आपसे पहले से मौजूद थी।
पार्सर यहीं, हाथ से लिखा गया है, ब्राउज़र से उधार नहीं लिया गया: क्योंकि ब्राउज़र का ग़लती वाला संदेश किसी स्पेसिफ़िकेशन ने तय ही नहीं किया, और वह ब्राउज़र दर ब्राउज़र अलग होता है। यह वाला पंक्ति, कॉलम और यह भी बताता है कि वहाँ क्या चाहिए था, हर जगह एक जैसा।
जाँचेंसबूत, कदम दर कदमनेटवर्क इंस्पेक्टर से जाँच, एक-एक हरकत समझाई हुई, तस्वीरों के साथ।
यह कोनालिखाई और डेटा वाला कोनागिनना, मिलाना, सजाना, साफ़ करना। वे छोटे-छोटे काम जो हाथ में न हों तो एक घंटा खा जाते हैं।