मुख्य सामग्री पर जाएं
CuteJSON
↑↓ नेविगेट करें Enter चुनें Esc बंद करें

JSON कैसे मान्य करें और वास्तव में त्रुटि को समझें

प्रकाशित 2 मिनट का पाठ Akash Kinkar Pandey द्वारा

एक मान्यकर्ता जो केवल “अप्रत्याशित टोकन” कहता है, उसने आपको बताया है कि वह कहाँ हार मान गया, न कि आपने क्या गलत किया। ये अक्सर अलग-अलग जगहें होती हैं। एक गायब कॉमा आमतौर पर अगले टोकन पर रिपोर्ट होता है, गायब कॉमा पर नहीं, और एक अनक्लोज़्ड ब्रैकेट फ़ाइल के अंत में रिपोर्ट होता है चाहे उसने किसी भी लाइन में खुला हो।

JSON मान्यकर्ता क्या रिपोर्ट करता है

एक दस्तावेज़ पेस्ट करें और मान्य करें दबाएं, या बस टाइप करना बंद कर दें क्योंकि मान्यता स्वचालित रूप से चलती है। परिणाम वास्तविक संरचना का नाम देता है जो गलत है: एकल उद्धरण चिह्न, एक बिना उद्धृत कुंजी, एक ट्रेलिंग कॉमा, एक गलत केस कीवर्ड जैसे True या NULL, NaN या Infinity, एक प्रमुख शून्य, या एक गलत एस्केप सीक्वेंस, प्रत्येक उस लाइन और कॉलम के साथ जहाँ यह शुरू होता है।

डुप्लिकेट कुंजियाँ, जिनके बारे में अधिकांश मान्यकर्ता कुछ नहीं कहते

डुप्लिकेट कुंजी कानूनी JSON है। विनिर्देश इसकी अनुमति देता है, और आप जिस भी पार्सर का उपयोग करने की संभावना रखते हैं वह अंतिम मान रखता है और पहले वाले को चुपचाप त्याग देता है। इसका मतलब है कि डेटा एक ऐसे दस्तावेज़ से गायब हो सकता है जो पूरी तरह से मान्य है, बिना कहीं भी कोई त्रुटि के। पेस्ट करें

{"region":"eu-west-1","retries":3,"region":"us-east-1"}

और मान्यकर्ता इसे मान्य JSON के रूप में रिपोर्ट करता है, एक लाइन, और अलग से चेतावनी देता है:

डुप्लिकेट कुंजी “region”। अंतिम मान जीतता है, पहले वाला लाइन 1 पर त्याग दिया जाता है।

यह एक चेतावनी है, त्रुटि नहीं, क्योंकि विनिर्देश वास्तव में इसकी अनुमति देता है। लेकिन यह उस प्रकार का बग है जो तब तक अदृश्य है जब तक कि डाउनस्ट्रीम कुछ गलत मान न पढ़ ले, और अधिकांश उपकरण इसका उल्लेख कभी नहीं करते।

त्रुटि बनाम चेतावनी क्या मायने रखती है

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

यह कमिट या डिप्लॉय से पहले क्यों महत्वपूर्ण है

कॉन्फ़िग फ़ाइलें, API फ़िक्स्चर और जनरेट किया गया डेटा सभी अंततः एक JSON पार्सर से गुज़रते हैं, आमतौर पर प्रोडक्शन में, जहाँ त्रुटि संदेश रनटाइम के डिफ़ॉल्ट पार्सर द्वारा दिया जाता है। यहाँ एक ट्रेलिंग कॉमा या डुप्लिकेट कुंजी पकड़ना, एक ऐसे संदेश के साथ जो गलती का नाम दे, एक डिप्लॉय के बाद उसी समस्या को डीबग करने से तेज़ है।

सभी लेखों पर लौटें