संक्षेप में: JSON का सिंटैक्स छोटा और सख़्त है — जो त्रुटियाँ पार्सर को तोड़ती हैं (ट्रेलिंग कॉमा, बिना कोट वाली कीज़, सिंगल कोट्स) वे मिनिफ़ाइड डेटा में अदृश्य होती हैं लेकिन फ़ॉर्मैट होने पर स्पष्ट। असली सिंटैक्स नियमों को जानना "API ने एक त्रुटि लौटाई" को दो सेकंड की करेक्शन में बदल देता है। इस गाइड को Encoding Converter, Character Counter, Text Difference और AI Hidden Characters के साथ जोड़ें।

JSON को फ़ॉर्मैट करने का मतलब है इसकी संरचना को पठनीय बनाने के लिए व्हाइटस्पेस और इंडेंटेशन जोड़ना; इसे वैलिडेट करने का मतलब है यह जाँचना कि वह संरचना वास्तव में RFC 8259 में परिभाषित व्याकरण का पालन करती है। मिनिफ़ाइड JSON — वह कॉम्पैक्ट, व्हाइटस्पेस-रहित रूप जो API वास्तव में ट्रांसमिट करते हैं — सही है लेकिन अपठनीय; एक फ़ॉर्मैटर डेटा बदले बिना इसे उलट देता है।

सिंटैक्स नियम जो वास्तव में मायने रखते हैं

JSON कीज़ डबल कोट्स में स्ट्रिंग होनी चाहिए — {name: "value"} अमान्य है, केवल {"name": "value"} पार्स होता है। सिंगल कोट्स स्ट्रिंग्स या कीज़ के लिए कभी मान्य नहीं होते, JavaScript ऑब्जेक्ट लिटरल्स के विपरीत, जिन्हें JSON का सिंटैक्स जानबूझकर प्रतिबंधित करता है। किसी array या object में अंतिम आइटम के बाद ट्रेलिंग कॉमा — ["a", "b",] — अमान्य JSON है, भले ही यह कुछ अन्य भाषाओं में हानिरहित (या यहाँ तक कि परंपरा से आवश्यक) हो, और यह सबसे आम कारणों में से एक है कि हाथ से एडिट किया गया JSON पार्स क्यों नहीं होता।

"सही दिखता है" वैलिड होने जैसा क्यों नहीं है

एक JSON दस्तावेज़ दृष्टिगत रूप से एक वैलिड दस्तावेज़ से अप्रभेद्य हो सकता है और फिर भी पार्स होने में विफल हो सकता है — किसी बड़ी नेस्टेड संरचना के अंत में एक गुम क्लोज़िंग कर्ली ब्रैकेट, वर्ड प्रोसेसर से पेस्ट किया गया एक स्मार्ट कोट () सीधे " की बजाय, या एक भटका हुआ कमेंट (JSON में कमेंट सिंटैक्स बिल्कुल नहीं है, JSON5 या JSONC के विपरीत) — ये सब एक सख़्त पार्सर को तोड़ देंगे जबकि पहली नज़र में सही दिखते हैं। यही ठीक कारण है कि देखने से पहले फ़ॉर्मैट करना मदद करता है: सही इंडेंटेशन एक बंद न किए गए ब्रैकेट को दृष्टिगत रूप से स्पष्ट बना देता है, अपेक्षित नेस्टिंग पैटर्न को तोड़कर।

फ़ॉर्मैटिंग बनाम स्कीमा वैलिडेशन

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

गड़बड़ या टूटे JSON के लिए एक वर्कफ़्लो

  1. रॉ JSON — मिनिफ़ाइड, टूटा, या कुछ और — पहले एक फ़ॉर्मैटर में पेस्ट करें।
  2. अगर यह पार्स होता है, तो उस फ़ील्ड या वैल्यू के लिए इंडेंटेड संरचना की समीक्षा करें जिसे आप वास्तव में ढूँढ रहे हैं।
  3. अगर पार्स करने में विफल होता है, तो पहले त्रुटि के स्थान की जाँच करें: ज़्यादातर पार्सर एक लाइन/कॉलम रिपोर्ट करते हैं, जो आमतौर पर सीधे किसी गुम कॉमा, ब्रैकेट, या कोट की ओर इशारा करता है।
  4. जब सोर्स हाथ से टाइप किया गया हो या किसी नॉन-कोड एडिटर से पेस्ट किया गया हो, तो ट्रेलिंग कॉमा और स्मार्ट कोट्स पर विशेष ध्यान दें।

बचने योग्य आम गलतियाँ

  • यह मान लेना कि वैलिड दिखने वाला इंडेंटेशन वैलिड JSON का मतलब है — फ़ॉर्मैटिंग और पार्सिंग अलग-अलग स्टेप हैं।
  • JavaScript या Python की आदत से एक ट्रेलिंग कॉमा जोड़ना, जहाँ इसे अक्सर सहन किया जाता है।
  • वर्ड प्रोसेसर से JSON पेस्ट करना और सीधे उद्धरण चिह्नों के बजाय घुमावदार स्मार्ट कोट्स मिलना।
  • "बिना त्रुटि के फ़ॉर्मैट होता है" को "API द्वारा अपेक्षित स्कीमा से मेल खाता है" के साथ भ्रमित करना — ये अलग जाँच हैं।

ज़्यादातर JSON त्रुटियाँ किसी विशिष्ट जगह पर एक विशिष्ट कैरेक्टर होती हैं — एक फ़ॉर्मैटर का असली मूल्य उस जगह को दिखाई देने वाला बनाना है बजाय इसके कि आपको इसे खोजने के लिए एक ही अटूट लाइन को स्कैन करने के लिए छोड़ दिया जाए।