JSON को फ़ॉर्मैट और वैलिडेट कैसे करें
JSON को फ़ॉर्मैट करने के लिए, इसे एक ऐसे फ़ॉर्मैटर में पेस्ट करें जो इंडेंटेशन और लाइन ब्रेक जोड़ता है ताकि संरचना पढ़ने में आसान हो जाए; इसे वैलिडेट करने के लिए, इसे एक पार्सर से चलाएँ जो सिंटैक्स जाँचता है और ठीक उस जगह की ओर इशारा करता है जहाँ यह टूटता है। फ़ॉर्मैटिंग (जिसे ब्यूटीफ़ाइंग या प्रिटी-प्रिंटिंग भी कहते हैं) और वैलिडेटिंग आमतौर पर साथ-साथ होते हैं: एक अच्छा टूल वैध JSON को फिर से इंडेंट करता है और, जब इनपुट टूटा हुआ हो, तो आपको ठीक-ठीक बताता है कि क्या ग़लत है। नीचे बताया गया है कि हर क्रिया असल में क्या करती है, फ़ॉर्मैट कब करें बनाम मिनिफ़ाई कब करें, और पार्सर द्वारा फेंकी गई त्रुटियों को कैसे पढ़ें और ठीक करें।
फ़ॉर्मैट, मिनिफ़ाई, वैलिडेट: तीन अलग काम
इन तीनों शब्दों को आपस में बदलकर इस्तेमाल कर लिया जाता है, पर ये आपके डेटा के साथ अलग-अलग काम करते हैं।
- फ़ॉर्मैटिंग (ब्यूटीफ़ाइंग) इंडेंटेशन और लाइन ब्रेक जोड़ती है ताकि नेस्टेड ऑब्जेक्ट और ऐरे दृश्य रूप से क़रीने से लग जाएँ। यह डेटा नहीं बदलती — सिर्फ़ व्हाइटस्पेस — जिससे किसी कॉन्फ़िग फ़ाइल या API रिस्पॉन्स को नज़र से पढ़ना कहीं आसान हो जाता है।
- मिनिफ़ाइंग ठीक इसका उल्टा करती है: यह हर ग़ैर-ज़रूरी स्पेस, टैब और न्यूलाइन हटा देती है ताकि पेलोड जितना हो सके उतना छोटा हो। डेटा वही रहता है, बस लगभग एक ही लाइन पर ठूँस दिया जाता है।
- वैलिडेटिंग जाँचती है कि टेक्स्ट वैध JSON है भी या नहीं। एक वैलिडेटर इनपुट को पार्स करता है और या तो पुष्टि करता है कि यह सही ढंग से बना है या उसे मिली पहली सिंटैक्स त्रुटि की रिपोर्ट करता है।
व्यवहार में, आप पढ़ते और डीबग करते समय फ़ॉर्मैट करते हैं, और डेटा को तार के पार भेजने या उसे स्टोर करने से ठीक पहले उसे मिनिफ़ाई करते हैं। वैलिडेशन दोनों को सहारा देती है — आप ऐसे टेक्स्ट को भरोसे से फ़ॉर्मैट या मिनिफ़ाई नहीं कर सकते जो पहली बात में वैध JSON ही न हो।
फ़ॉर्मैट कब बनाम मिनिफ़ाई कब
जब भी किसी इंसान को डेटा देखना हो, तब फ़ॉर्मैटिंग का सहारा लें:
- डीबग करते समय किसी API रिस्पॉन्स का निरीक्षण करना।
- किसी
package.json,tsconfig.json, या किसी भी कॉन्फ़िग फ़ाइल की समीक्षा या संपादन करना। - वर्ज़न कंट्रोल में दो JSON फ़ाइलों का डिफ़ निकालना, जहाँ एक जैसी इंडेंटेशन डिफ़ को छोटा और सार्थक रखती है।
- किसी लॉग से ठूँसा हुआ एक-लाइन वाला घना ब्लॉब पेस्ट करना और उसकी असल बनावट को वाकई समझना चाहना।
जब बाइट मायने रखते हों और कोई इंसान न पढ़ रहा हो, तब मिनिफ़ाइंग का सहारा लें:
- किसी HTTP रिस्पॉन्स या रिक्वेस्ट बॉडी में JSON भेजना, जहाँ छोटे पेलोड का मतलब है तेज़ ट्रांसफ़र।
- किसी एनवायरनमेंट वेरिएबल या URL में कॉन्फ़िगरेशन एम्बेड करना।
- कई रिकॉर्ड स्टोर करना जहाँ हज़ारों पंक्तियों में व्हाइटस्पेस जुड़कर काफ़ी बढ़ जाता है।
एक उपयोगी आदत: अपनी सोर्स फ़ाइलों को पठनीयता के लिए फ़ॉर्मैट किया हुआ रखें, और अपने बिल्ड या सर्वर को बाहर भेजते समय उसे मिनिफ़ाई करने दें। आपको दोनों का सबसे अच्छा मिल जाता है — रिपॉज़िटरी में पढ़ने योग्य, तार पर सघन।
सबसे आम JSON त्रुटियाँ (और उन्हें कैसे ठीक करें)
JSON जानबूझकर सख़्त है, और यही चीज़ इसे हर भाषा में पोर्टेबल बनाती है। वही सख़्ती लोगों को उलझाती है, ख़ासकर उन्हें जिन्हें JavaScript ऑब्जेक्ट लिटरल लिखने की आदत है। ये वे त्रुटियाँ हैं जो बार-बार सामने आती हैं:
- ट्रेलिंग कॉमा। किसी ऑब्जेक्ट या ऐरे के आख़िरी आइटम के बाद एक कॉमा —
{"a": 1,}— अमान्य है। इसे हटा दें। यह सबसे आम ग़लती है, क्योंकि ज़्यादातर प्रोग्रामिंग भाषाएँ इसकी इजाज़त देती हैं। - दोहरे उद्धरण चिह्नों के बजाय एकल उद्धरण चिह्न। JSON में कुंजियों (की) और स्ट्रिंग मानों दोनों के लिए दोहरे उद्धरण चिह्न चाहिए।
{'name': 'Ada'}को{"name": "Ada"}बनना ही होगा। - बिना उद्धरण चिह्न वाली कुंजियाँ। कुंजियाँ हमेशा उद्धरण चिह्नों वाली स्ट्रिंग होती हैं।
{name: "Ada"}एक JavaScript ऑब्जेक्ट है, JSON नहीं; इसे{"name": "Ada"}होना ही चाहिए। - गुम कॉमा। आख़िरी को छोड़कर हर आइटम को अगले से अलग करने के लिए एक कॉमा चाहिए। बीच में बिना किसी चीज़ के लगातार दो मान पार्स होने में नाकाम रहेंगे।
- टिप्पणियाँ (कमेंट)। JSON में कोई कमेंट सिंटैक्स नहीं होता।
//से शुरू होने वाली या/* */में लिपटी पंक्तियाँ इजाज़त नहीं रखतीं और टेक्स्ट के वैलिडेट होने से पहले इन्हें हटाना ही होगा।
कुछ और बातें जिन पर ध्यान रखें: संख्याओं में अग्रणी शून्य या अंत में दशमलव बिंदु नहीं हो सकता, स्ट्रिंग्स को \n और \" जैसे विशेष वर्णों को एस्केप करना होता है, और संख्याओं तथा स्ट्रिंग्स के अलावा एकमात्र अनुमत लिटरल हैं true, false, और null (छोटे अक्षरों में, बिना उद्धरण चिह्न के)।
किसी पार्स त्रुटि को कैसे पढ़ें
जब वैलिडेशन नाकाम होती है, तो पार्सर आमतौर पर एक स्थिति बताता है — एक लाइन और कॉलम, या एक कैरेक्टर ऑफ़सेट। उस स्थान को अक्षरशः पढ़ें: त्रुटि उस पहले कैरेक्टर पर रिपोर्ट की जाती है जिसे पार्सर समझ नहीं पाया, जो अक्सर असली ग़लती के ठीक बाद होता है। उदाहरण के लिए, एक गुम कॉमा अक्सर अगली कुंजी की शुरुआत में चिह्नित किया जाता है, न कि उस ख़ाली जगह पर जहाँ कॉमा होना चाहिए था। बताए गए स्थान पर जाएँ, फिर उसके ठीक पहले वाले टोकन को देखें। एक बार पहली त्रुटि ठीक कर लेने पर, फिर से वैलिडेट करें, क्योंकि पार्सर पहली समस्या पर ही रुक जाता है और उसके पीछे और भी हो सकती हैं।
इसे अपने ब्राउज़र में निजी तौर पर करें
बहुत से ऑनलाइन JSON टूल आप जो भी पेस्ट करते हैं उसे प्रोसेसिंग के लिए किसी रिमोट सर्वर पर भेज देते हैं। JSON के साथ अक्सर यह अपलोड करने के लिए सबसे बुरा डेटा होता है, क्योंकि ठीक यहीं API कुंजियाँ, एक्सेस टोकन, आंतरिक होस्टनाम, ग्राहक रिकॉर्ड और दूसरे राज़ रहा करते हैं।
Andev का JSON Formatter इससे पूरी तरह बचता है। यह ब्राउज़र के अपने नेटिव JSON.parse और JSON.stringify का इस्तेमाल करता है, जिसका मतलब है:
- आपका डेटा कभी अपलोड नहीं होता। सब कुछ आपके डिवाइस पर लोकल रूप से चलता है; कुछ भी कहीं नहीं भेजा जाता।
- यह सटीक पार्स त्रुटि सामने लाता है। जब इनपुट अमान्य हो, तो आपको विशिष्ट संदेश और स्थान दिखता है ताकि आप सीधे समस्या तक जा सकें।
- इंडेंट आकार आप चुनते हैं। अपने प्रोजेक्ट की शैली से मेल खाने के लिए दो स्पेस, चार स्पेस, या टैब से फ़ॉर्मैट करें — या एक ही लाइन में मिनिफ़ाई कर दें।
- यह तुरंत होता है। न कोई अपलोड-करो-और-इंतज़ार-करो वाला चक्कर; नतीजा उतनी ही तेज़ी से सामने आ जाता है जितनी तेज़ी से आप पेस्ट कर सकते हैं।
चूँकि यह उसी JSON इंजन का सहारा लेता है जिसे आपके एप्लिकेशन पहले से इस्तेमाल करते हैं, इसलिए यह जो वैलिडेशन रिपोर्ट करता है वह इस बात से मेल खाता है कि वही स्ट्रिंग पार्स करते समय आपका कोड असल में कैसा बर्ताव करेगा। यह इसे संवेदनशील कॉन्फ़िगरेशन और API पेलोड के साथ इस्तेमाल के लिए सुरक्षित बनाता है, और शिप करने से पहले एक झटपट जाँच के तौर पर भरोसेमंद।
पड़ोसी कामों के लिए, यही लोकल, कोई-अपलोड-नहीं वाला तरीक़ा Andev के Base64 एनकोडर और डिकोडर और उसके URL एनकोडर और डिकोडर को भी चलाता है — दोनों तब काम आते हैं जब JSON को किसी डेटा URI, किसी टोकन, या किसी क्वेरी स्ट्रिंग में एम्बेड किया जा रहा हो।
मुख्य बातें
- फ़ॉर्मैटिंग पठनीयता के लिए इंडेंटेशन जोड़ती है; मिनिफ़ाइंग छोटे पेलोड के लिए व्हाइटस्पेस हटाती है; वैलिडेटिंग सिंटैक्स जाँचती है। ये तीन अलग काम हैं।
- इंसानों के लिए फ़ॉर्मैट करें, तार के लिए मिनिफ़ाई — सोर्स फ़ाइलें पढ़ने योग्य रखें और अपने बिल्ड को आउटपुट सघन करने दें।
- ज़्यादातर त्रुटियाँ सख़्ती के जाल हैं: ट्रेलिंग कॉमा, एकल उद्धरण चिह्न, बिना उद्धरण चिह्न वाली कुंजियाँ, गुम कॉमा, और टिप्पणियाँ — ये सब अमान्य JSON हैं।
- पार्स त्रुटियों को बताए गए स्थान पर पढ़ें, फिर ठीक उसके पहले वाले टोकन को जाँचें; एक त्रुटि ठीक करें और फिर से वैलिडेट करें, क्योंकि पार्सर पहली पर ही रुक जाता है।
- इसे लोकल रखें। एक ब्राउज़र-नेटिव फ़ॉर्मैटर आपका डेटा कभी अपलोड नहीं करता, जो उन राज़ों के लिए सबसे ज़्यादा मायने रखता है जो कॉन्फ़िग और API JSON के भीतर रहते हैं।
अभी कुछ JSON साफ़ करना या जाँचना है? मुफ़्त, निजी JSON Formatter खोलें — न कोई अपलोड, न साइन-अप — या इन-ब्राउज़र डेवलपर टूल का पूरा सेट देखें।