सीधे JSON एडिटर पर जाएँ
JSON Formatter Viewer

JSON वैलिडेटर

input.json

अपना JSON यहाँ पेस्ट करें

या कोई .json फ़ाइल यहाँ कहीं भी छोड़ दें

फ़ॉर्मैट किया गया आउटपुट यहाँ दिखेगा।

इनपुट का इंतज़ार है

एरर पैनल क्या दिखाता है

ब्राउज़र के अपने पार्सर संदेश छोटे और हर ब्राउज़र में अलग होते हैं — Unexpected token } से यह लगभग पता नहीं चलता कि बदलना क्या है। वैलिडेशन फ़ेल होने पर चार चीज़ें बताई जाती हैं:

  • लाइन और कॉलम, पार्सर के बताए कैरेक्टर ऑफ़सेट से निकाले गए।
  • सोर्स लाइन और कैरेट ठीक उस कैरेक्टर के नीचे, ऐसी विंडो में कि 4,000 कैरेक्टर की मिनिफ़ाई लाइन पर भी कैरेट दिखता रहे।
  • पार्सर को क्या चाहिए था, आसान भाषा में — कच्चे इंजन संदेश की जगह।
  • संभावित वजह, गड़बड़ी के आस-पास के सोर्स को देखकर अनुमान लगाई गई।

गड़बड़ वाली लाइन एडिटर के गटर में भी निशान लगती है, और एरर पर जाएँ आपका कर्सर उसी कैरेक्टर पर रख देता है, ताकि आप उसे ठीक करें और टाइप करते-करते स्टेटस को हरा होते देखें।

हर आम वजह और उसका इलाज

ट्रेलिंग कॉमा

JavaScript में वैध, JSON में अमान्य। कॉमा के बाद पार्सर एक और मेंबर माँगता है।

{ "a": 1, "b": 2, }   ✗
{ "a": 1, "b": 2 }     ✓

सिंगल कोट

JSON स्ट्रिंग डबल कोट में होती हैं — कीज़ और वैल्यू दोनों के लिए। कोई अपवाद नहीं।

{ 'name': 'ada' }      ✗
{ "name": "ada" }      ✓

बिना कोट वाले प्रॉपर्टी नाम

JavaScript ऑब्जेक्ट लिटरल में बिना कोट की कीज़ चलती हैं, JSON में नहीं। सोर्स कोड से कॉपी किया स्निपेट फ़ेल होने की सबसे आम वजह यही है।

{ name: "ada" }        ✗
{ "name": "ada" }      ✓

कमेंट

JSON में कमेंट सिंटैक्स नहीं है — जानबूझकर। कॉन्फ़िग फ़ाइल में टिप्पणी चाहिए तो "_comment" की इस्तेमाल करें, या JSON5, YAML या TOML जैसा फ़ॉर्मैट चुनें। “ठीक करें” // और /* */ कमेंट हटा देता है, ताकि डेटा कम से कम पढ़ा जा सके।

Python और JavaScript के लिटरल

True, False और None Python repr पेस्ट करने से आते हैं; undefined, NaN और Infinity JavaScript से। JSON में ठीक तीन कीवर्ड हैं, सब लोअरकेस: true, false, null। JSON में NaN या infinity लिखने का कोई तरीका नहीं — null या कोई स्ट्रिंग सेंटिनल इस्तेमाल करें।

स्ट्रिंग के अंदर बिना एस्केप किए कैरेक्टर

स्ट्रिंग के अंदर सीधी नई लाइन, टैब या बिना एस्केप किया डबल कोट उसे समय से पहले बंद कर देता है, और एरर आमतौर पर असली गलती से कुछ टोकन बाद दिखता है। इन्हें \n, \t और \" लिखें। U+0020 से नीचे के कच्चे कंट्रोल कैरेक्टर कभी मान्य नहीं हैं।

एक से ज़्यादा टॉप-लेवल वैल्यू

JSON डॉक्यूमेंट में एक ही वैल्यू होती है। नई लाइन से अलग किए दो ऑब्जेक्ट NDJSON हैं — एक अलग और बहुत उपयोगी फ़ॉर्मैट, पर उसे लाइन-दर-लाइन पार्स करना पड़ता है। “ठीक करें” उसे पहचानकर लाइनों को एक ऐरे में लपेट देता है, जिससे पूरी फ़ाइल एक साथ देखी जा सके।

वैध, पर जोखिम भरा

वैलिडेशन पास कर लेने का मतलब यह नहीं कि डॉक्यूमेंट भेजने लायक है। दो चीज़ें वैध JSON हैं और फिर भी दिक्कत करती हैं:

  • डुप्लिकेट कीज़। ग्रामर इन्हें मानता है; व्यवहार हर लाइब्रेरी पर निर्भर है। JavaScript आख़िरी वाली रखता है, इसलिए डेटा चुपचाप गायब हो सकता है।
  • 253−1 से बड़े इंटीजर। हर JavaScript-आधारित कंज़्यूमर पार्स करते ही प्रिसिशन खो देता है। ID 64-बिट हों तो उन्हें स्ट्रिंग के रूप में भेजें।

डॉक्यूमेंट वैध हो जाने पर ट्री व्यूअर यह जाँचने का सबसे तेज़ तरीका है कि ढाँचा वैसा ही है जैसा आपने सोचा था, और फ़ॉर्मैटिंग उसे रिव्यू लायक बना देती है।

सामान्य प्रश्न

कौन सा JSON स्पेसिफ़िकेशन इस्तेमाल होता है?

ब्राउज़र का नेटिव पार्सर, जो RFC 8259 और ECMA-404 लागू करता है। व्यावहारिक रूप से दोनों बराबर हैं, और RFC 8259 पुराने RFC 7159 तथा RFC 4627 की जगह लेता है। जो डॉक्यूमेंट यहाँ वैलिड होता है वह Node, Python, Go और Java में भी पार्स होता है।

क्या यह मेरे JSON को JSON Schema के हिसाब से जाँचता है?

नहीं — यह सिंटैक्स जाँचता है, ढाँचा नहीं। यह बताता है कि “यह पार्स होने लायक JSON है या नहीं”, यह नहीं कि “यह मेरे कॉन्ट्रैक्ट से मेल खाता है या नहीं”। स्कीमा के हिसाब से जाँच के लिए स्कीमा चाहिए, और वह ब्राउज़र टैब की जगह आपके टेस्ट सूट में बेहतर चलती है।

बताया गया कॉलम मेरे एडिटर से क्यों अलग है?

कॉलम कैरेक्टर में 1 से गिने जाते हैं, जैसा पार्सर बताता है। जो एडिटर टैब को कई कॉलम की चौड़ाई में दिखाते हैं, वे टैब से शुरू होने वाली लाइनों पर बड़ा नंबर दिखाएँगे। एरर पैनल का कैरेट हमेशा सही कैरेक्टर पर होता है।

क्या खाली डॉक्यूमेंट वैध JSON है?

नहीं। RFC 8259 के मुताबिक ठीक एक वैल्यू ज़रूरी है, इसलिए खाली फ़ाइल अमान्य है। null, 0, false, "", [] और {} — ये सब अपने आप में वैध डॉक्यूमेंट हैं।

बाकी टूलकिट

वही इंजन, वही प्राइवेसी — हर पेज पूरी तरह आपके ब्राउज़र में चलता है।