अपने ब्राउज़र में ही JSON को फ़ॉर्मैट, वैलिडेट और मिनिफ़ाई करें
JSON, जो JavaScript Object Notation का संक्षिप्त रूप है, आधुनिक वेब की साझा भाषा है। आप जिस भी REST API को कॉल करते हैं वह लगभग हमेशा इसे ही लौटाता है, ज़्यादातर कॉन्फ़िगरेशन फ़ाइलें इसी पर टिकी होती हैं, और सेवाओं तथा फ़्रंट-एंड के बीच बहने वाले डेटा का एक बड़ा हिस्सा JSON के रूप में ही सिरियलाइज़ होता है। यह लोकप्रिय यूँ ही नहीं है: यह फ़ॉर्मैट सरल है, भाषा से स्वतंत्र है, और उन ऑब्जेक्ट, ऐरे, स्ट्रिंग और नंबर पर साफ़-सुथरे ढंग से मैप होता है जिनमें प्रोग्रामर पहले से ही सोचते हैं। पर यही सघनता एक नुकसान भी लेकर आती है। जैसे ही कोई सर्वर आपको सैकड़ों नेस्टेड कीज़ से भरी एक ही पंक्ति वाली प्रतिक्रिया थमाता है, वह संरचना जिसने JSON को आकर्षक बनाया था, अक्षरों की एक दीवार में खो जाती है।
speedor.net JSON Formatter उसी संरचना को वापस लौटाने के लिए मौजूद है। अपना डेटा पेस्ट करें, और यह तुरंत JSON को सुंदर ढंग से प्रिंट करता है, वैलिडेट करता है और मिनिफ़ाई करता है — पूरी तरह आपके ब्राउज़र टैब के भीतर ही। कुछ भी किसी सर्वर पर अपलोड नहीं होता, और यह बात तब बहुत मायने रखती है जब आप जिस पेलोड को जाँच रहे हैं वह टोकन, ग्राहक रिकॉर्ड या आंतरिक पहचानकर्ताओं वाली एक API प्रतिक्रिया हो।

इंडेंटेशन JSON को फिर से पठनीय क्यों बना देता है
फ़ॉर्मैटिंग, जिसे ब्यूटिफ़ाइंग या प्रिटी-प्रिंटिंग भी कहते हैं, सघन या मिनिफ़ाई की गई JSON को लेती है और उसमें लाइन ब्रेक तथा एकसमान इंडेंटेशन जोड़ देती है। जानकारी ज्यों की त्यों रहती है; केवल व्हाइटस्पेस बदलता है। फिर भी यही व्हाइटस्पेस आपकी नज़र को नेस्टिंग की गहराई तक ले जाता है, यह बताता है कि एक ऑब्जेक्ट कहाँ ख़त्म होता है और अगला कहाँ शुरू होता है, और तीन आइटम वाले ऐरे को तीन सौ आइटम वाले ऐरे से अलग पहचानने देता है। जब आप रात के दो बजे किसी इंटीग्रेशन को डीबग कर रहे होते हैं, तब एक पठनीय पेड़ और एक अटूट स्ट्रिंग के बीच का फ़र्क ही बग को ढूँढ़ने और चूक जाने के बीच का फ़र्क होता है।
एक अच्छा फ़ॉर्मैटर कीज़ का क्रम और सटीक मान भी ज्यों का त्यों रखता है, ताकि आप जो पढ़ें वही वाक़ई वह हो जो API ने भेजा था। आप कोई दोबारा प्रस्तुत किया गया अनुमान नहीं देख रहे होते; आप वही बाइट्स देख रहे होते हैं, बस इस तरह सजे हुए कि कोई इंसान उन्हें उतनी ही आसानी से पढ़ सके जितनी आसानी से कोई मशीन।
वैलिडेशन और वे ग़लतियाँ जो सबको उलझा देती हैं
ब्यूटिफ़ाई करना तो आधा काम है। JSON को फ़ॉर्मैट किया ही तब जा सकता है जब वह वैध हो, और इस फ़ॉर्मैट के सख़्त नियम उम्मीद से कहीं ज़्यादा ग़लतियाँ पकड़ लेते हैं। एक वैलिडेटर आपके इनपुट को पार्स करता है और आपको ठीक-ठीक बताता है कि वह कहाँ टूटता है, आमतौर पर किसी पंक्ति और स्थिति की ओर इशारा करते हुए, ताकि आपको अंधेरे में टटोलना न पड़े। नीचे गिनी-चुनी ग़लतियाँ ही टूटी हुई JSON के अधिकांश मामलों के लिए ज़िम्मेदार हैं:
- ट्रेलिंग कॉमा। JSON किसी ऑब्जेक्ट या ऐरे के आख़िरी एलिमेंट के बाद कॉमा को मना करता है। JavaScript इसे सहन कर लेता है, और ठीक इसीलिए डेवलपर आदतन इसे पेस्ट कर बैठते हैं।
- सिंगल कोट्स। स्ट्रिंग और कीज़ में डबल कोट्स ही इस्तेमाल होने चाहिए। सोर्स कोड से सीधे किसी ऑब्जेक्ट लिटरल को उठाने पर अक्सर सिंगल कोट्स पीछे रह जाते हैं, और पार्सर इसे अस्वीकार कर देता है।
- बिना कोट वाली कीज़। हर की एक कोट की गई स्ट्रिंग होनी चाहिए। नंगी कीज़, जो किसी JavaScript ऑब्जेक्ट में ठीक चलती हैं, JSON में अवैध हैं।
- गुम या बेमेल ब्रैकेट। कोई बिना बंद किया
{या[, या कोई भटका हुआ बंद करने वाला ब्रैकेट, पूरे दस्तावेज़ को पटरी से उतार देता है। फ़ॉर्मैटर वहीं उजागर कर देता है जहाँ संतुलन टूटता है। - कमेंट और अपरिभाषित मान। JSON में कोई कमेंट और कोई
undefinedनहीं होता; केवलnull, बूलियन, नंबर, स्ट्रिंग, ऐरे और ऑब्जेक्ट की अनुमति है।
किसी संदिग्ध पेलोड को पहले वैलिडेटर से गुज़ारिए और ये समस्याएँ कई विफल डिप्लॉय की उलझाने वाली शृंखला के बाद नहीं, बल्कि कुछ ही सेकंड में सामने आ जाती हैं।

पेलोड छोटा करने के लिए मिनिफ़ाई करना
उल्टी क्रिया भी उतनी ही उपयोगी है। मिनिफ़ाई करना हर वैकल्पिक व्हाइटस्पेस बाइट को हटा देता है, और आपकी JSON को वापस सबसे सघन एक-पंक्ति वाले रूप में समेट देता है। जब डेटा तार पर भेजा जाना हो या किसी कॉन्फ़िग मान में जाना हो, तो आपको ठीक यही चाहिए, क्योंकि छोटे पेलोड का अर्थ है कम बैंडविड्थ और तेज़ ट्रांसफ़र। एक आम कार्यप्रवाह यह है कि किसी प्रतिक्रिया का अध्ययन करते समय उसे ब्यूटिफ़ाई करें, जो भी ग़लत हो उसे ठीक करें, और फिर कमिट करने या किसी एनवायरनमेंट वैरिएबल में पेस्ट करने से पहले परिणाम को मिनिफ़ाई कर दें। एक ही टूल इस चक्र के दोनों सिरे सँभाल लेता है।
स्थानीय प्रोसेसिंग संवेदनशील डेटा को निजी रखती है
चूँकि हर चरण आपके अपने ब्राउज़र के भीतर JavaScript में चलता है, आप जो JSON पेस्ट करते हैं वह कभी आपकी मशीन से बाहर नहीं जाता। यह कोई मार्केटिंग की सजावट नहीं, बल्कि एक व्यावहारिक गारंटी है। आप बेयरर टोकन से भरी कच्ची API प्रतिक्रिया, उपयोगकर्ता डेटा का कोई एक्सपोर्ट, या किसी आंतरिक सेवा का कॉन्फ़िग बेझिझक डाल सकते हैं, इस चिंता के बिना कि कोई तीसरे पक्ष का सर्वर इसे लॉग कर रहा है। टैब बंद कर दीजिए और डेटा ख़त्म। जो भी डेटा-हैंडलिंग नियमों के अधीन काम करता है, उसके लिए सिर्फ़-स्थानीय प्रोसेसिंग जोखिमों की एक पूरी श्रेणी हटा देती है।
एक बार आपकी JSON साफ़ हो जाए, तो आप इसे और आगे ले जाना चाहेंगे। हमारे बाक़ी डेवलपर टूल देखिए, किसी संरचना को JSON से YAML में बदलिए, या किसी एम्बेडेड मान को Base64 से डिकोड कीजिए। हर टूल उसी सिद्धांत पर चलता है: तेज़, मुफ़्त, और पूरी तरह आपके ब्राउज़र में प्रोसेस होने वाला।
अक्सर पूछे जाने वाले सवाल
क्या मेरी JSON किसी सर्वर पर अपलोड होती है?
नहीं। फ़ॉर्मैटर पूरी तरह आपके ब्राउज़र में JavaScript का उपयोग करके चलता है। आपका डेटा कहीं नहीं भेजा जाता, इसलिए आप संवेदनशील API प्रतिक्रियाएँ या कॉन्फ़िगरेशन फ़ाइलें सुरक्षित रूप से पेस्ट कर सकते हैं।
फ़ॉर्मैटिंग और मिनिफ़ाइंग में क्या फ़र्क है?
फ़ॉर्मैटिंग इंडेंटेशन और लाइन ब्रेक जोड़कर JSON को पठनीय बनाती है। मिनिफ़ाइंग सारा वैकल्पिक व्हाइटस्पेस हटाकर पेलोड को जितना संभव हो उतना छोटा बना देती है। दोनों रूपों में डेटा स्वयं एक जैसा ही रहता है।
मेरी JSON वैलिडेट होने में विफल क्यों होती है?
सबसे आम कारण हैं ट्रेलिंग कॉमा, डबल कोट्स की जगह सिंगल कोट्स, बिना कोट वाली कीज़, कमेंट, और गुम या बेमेल ब्रैकेट। वैलिडेटर उस पंक्ति की ओर इशारा करता है जहाँ समस्या होती है।
क्या मैं JSON में सिंगल कोट्स इस्तेमाल कर सकता हूँ?
नहीं। JSON विनिर्देश सभी स्ट्रिंग और कीज़ के लिए डबल कोट्स की माँग करता है। सिंगल कोट्स JavaScript में वैध हैं पर JSON में नहीं, और यह त्रुटियों का एक बार-बार होने वाला स्रोत है।
क्या यह टूल फ़ॉर्मैट करते समय मेरा डेटा बदल देता है?
नहीं। फ़ॉर्मैटिंग केवल व्हाइटस्पेस जोड़ती या हटाती है। कीज़, मान और उनका क्रम बिल्कुल वैसे ही रहते हैं जैसे वे थे, इसलिए आप जो पढ़ते हैं वही वह है जो API ने वास्तव में भेजा था।
क्या कोई आकार सीमा है?
चूँकि प्रोसेसिंग स्थानीय रूप से होती है, व्यावहारिक सीमा किसी सर्वर की सीमा पर नहीं बल्कि आपके डिवाइस और ब्राउज़र पर निर्भर करती है। सामान्य API प्रतिक्रियाएँ और कॉन्फ़िग फ़ाइलें तुरंत फ़ॉर्मैट हो जाती हैं।
