गड़बड़ी कहाँ है, यह ढूँढना
चिपकाया हुआ JSON पास न हो तो पार्सर जहाँ रुका, वह लाइन और कॉलम दिख जाता है। उसी जगह को घूरने से पहले एक लाइन ऊपर देखिए। कॉमा छूटने या ज़्यादा लगने का पता अगले टोकन पर ही चलता है, इसलिए बताई गई जगह असली गलती से थोड़ा आगे होती है।
अक्सर वही कुछ वजहें निकलती हैं।
- आखिरी आइटम के बाद कॉमा। JavaScript ऑब्जेक्ट में चलता है, JSON में गलती है।
- सिंगल कोट।
'name'JSON स्ट्रिंग नहीं है। की और वैल्यू, दोनों डबल कोट में आते हैं। - कमेंट।
//या/* */वाली कॉन्फ़िग फ़ाइल JSONC होती है, JSON नहीं। - बिना कोट वाली की।
{name: "मान"}JavaScript का तरीका है। NaNऔरInfinity। दिखते संख्या जैसे हैं, पर JSON के नियमों में नहीं हैं। ये अक्सर लॉग से कॉपी करते समय आ जाते हैं।
छोटा कब करें
छोटा करने पर सारी खाली जगह हट जाती है और पूरा दस्तावेज़ एक लाइन में आ जाता है। किसी कॉन्फ़िग वैल्यू में डालना हो, एक एनवायरनमेंट वैरिएबल में समाना हो, या curl की बॉडी में चिपकाना हो तो यही रूप चाहिए। फ़ाइल छोटी भी होती है, पर सर्वर वैसे भी जवाब को gzip से दबाकर भेजते हैं, इसलिए सिर्फ़ आकार शायद ही वजह बनता है।
जो फ़ाइल रिपॉज़िटरी में जानी है, उसमें इंडेंट रहने दें। छोटी की हुई फ़ाइल में एक अक्षर बदलने पर भी डिफ़ पूरी फ़ाइल का बन जाता है, और उसे कोई नहीं पढ़ पाता।
की का क्रम और इंडेंट
फ़ॉर्मैट करने पर की का क्रम वैसा ही रहता है। नियमों के हिसाब से ऑब्जेक्ट में की का क्रम मायने नहीं रखता, पर व्यवहार में लगभग हर पार्सर डालने का क्रम बनाए रखता है, इसलिए यह टूल भी उसे नहीं बदलता।
2 स्पेस सबसे आम है, 4 स्पेस Python के टूल के साथ दिखता है। टैब से कुछ बाइट बचते हैं, पर एडिटर की सेटिंग से उसकी चौड़ाई बदलती रहती है। साझा रिपॉज़िटरी में जो पहले से चल रहा है, वही अपनाएँ।
टोकन और असली रिस्पॉन्स चिपकाते समय
आप जो चिपकाते हैं वह कहीं नहीं भेजा जाता। टेक्स्ट आपके ब्राउज़र में ही पढ़ा और दोबारा बनाया जाता है, इसलिए ग्राहकों के डेटा वाला रिस्पॉन्स या एक्सेस टोकन डिवाइस से बाहर नहीं जाता। फिर भी कई कंपनियाँ बाहरी टूल पर रोक रखती हैं, चाहे वे कैसे भी काम करते हों — प्रोडक्शन का डेटा हो तो पहले नियम देख लें।