"टूटा हुआ" JSON एक आम समस्या है: फ़ाइल लगभग सही दिखती है, लेकिन पार्सर इसे पढ़ने से इनकार करता है। अक्सर वजह भारतीय अंक-समूहन शैली में लिखी गई कोई संख्या होती है, जो सीधे कॉपी-पेस्ट कर दी जाती है।
अमान्य JSON के सामान्य कारण
- क्लोज़िंग ब्रैकेट से पहले अतिरिक्त कॉमा —
{"a": 1,}— जिसे जावास्क्रिप्ट बर्दाश्त करता है लेकिन सख्त JSON पार्सर नहीं। - डबल के बजाय सिंगल कोट्स — जावास्क्रिप्ट ऑब्जेक्ट लिटरल से कॉपी करते समय होने वाली आम गलती।
- बिना कोट वाली कुंजियाँ —
{"name": "राम"}के बजाय{name: "राम"}। - कमेंट्स — JSON स्पेसिफिकेशन में कमेंट्स की बिल्कुल अनुमति नहीं है, JSON5 या JSONC के विपरीत।
- कटा हुआ आउटपुट — अगर API रिस्पॉन्स या लॉग फ़ाइल बीच में कट जाए, तो दस्तावेज़ बिना बंद हुए रह जाता है।
भारतीय अंक-समूहन (लाख, करोड़) और JSON नंबर
भारतीय शैली में बड़ी संख्याएँ हज़ार के बाद हर दो अंकों पर कॉमा लगाकर लिखी जाती हैं — जैसे 12,34,567 (बारह लाख चौंतीस हज़ार पाँच सौ सड़सठ), न कि अंतरराष्ट्रीय शैली का 1,234,567। दोनों ही रूप JSON के लिए अमान्य हैं, क्योंकि JSON नंबर में कॉमा की इजाज़त ही नहीं है — चाहे वह अंतरराष्ट्रीय हो या भारतीय समूहन। किसी बिल या स्प्रेडशीट से ऐसा फ़ॉर्मेटेड आंकड़ा उठाकर {"amount": 12,34,567} जैसे फ़ील्ड में डालना पार्सर को कई अलग-अलग टोकनों में उलझा देता है, और मरम्मत टूल यह पक्के तौर पर नहीं बता सकता कि असली वैल्यू क्या थी।
स्वचालित मरम्मत कैसे काम करती है
एक JSON मरम्मत टूल अनुमान लगाता है: गायब कोट्स जोड़ना, अतिरिक्त कॉमा हटाना, संदर्भ के आधार पर बिना बंद किए ब्रैकेट बंद करना। यह सामान्य, आम गलतियों के लिए अच्छी तरह काम करता है, लेकिन यह जादू नहीं है — अगर डेटा ज़्यादा गंभीर रूप से खराब है तो टूल यह अनुमान नहीं लगा सकता कि कौन-सी वैल्यू मानी गई थी।
संभव की सीमाएँ
स्वचालित मरम्मत सिंटैक्स ठीक करती है, अर्थ नहीं। अगर कोई पूरा फ़ील्ड गायब है, या कोई वैल्यू तार्किक रूप से गलत है, तो टूल इसे नहीं पकड़ेगा — नतीजे की फिर भी मैन्युअल जाँच ज़रूरी है, खासकर जब आंकड़ा किसी भारतीय बिल या स्प्रेडशीट से आया हो।
जब मरम्मत अस्पष्ट हो
कुछ ख़राबियों के एक साथ कई समान रूप से मान्य सुधार हो सकते हैं। उदाहरण के लिए, बीच में कटी हुई स्ट्रिंग {"a": 1, "b": 2 को सिर्फ़ ब्रैकेट बंद करके ठीक किया जा सकता है — जिससे डेटा खो सकता है। मरम्मत की हेयुरिस्टिक "सबसे कम नुकसानदायक" अनुमान लगाती है, लेकिन यह एक अनुमान है, गारंटी नहीं।