JSON फॉर्मेटर और वैलिडेटर
JSON पेस्ट करें और उसे पढ़ने लायक फॉर्मेट करें, मिनिफाई करें या उसकी कीज़ सॉर्ट करें। अगर JSON पार्स नहीं होता, तो फॉर्मेटर वह लाइन और कॉलम दिखाता है जहाँ पार्सर अटका, और गड़बड़ी के ठीक नीचे एक निशान लगाता है। इससे 3,000 लाइनों वाले रिस्पॉन्स में छूटा हुआ कॉमा भी कुछ ही सेकंड में मिल जाता है।
0 अक्षर · 0 शब्द · 0 पंक्तियाँ
0 अक्षर · 0 शब्द · 0 पंक्तियाँ
यह पूरी तरह इसी ब्राउज़र टैब में चलता है। आपका टेक्स्ट न अपलोड होता है, न सेव किया जाता है।
JSON मान के प्रकार
RFC 8259 में ठीक यही मान मान्य हैं। ऑब्जेक्ट और ऐरे एक-दूसरे में नेस्ट हो सकते हैं; बाकी सब अंतिम मान हैं।
| प्रकार | उदाहरण | नियम |
|---|---|---|
| ऑब्जेक्ट | {"id": 7, "tags": ["a"]} | कीज़ डबल कोट में लिखी स्ट्रिंग होनी चाहिए; सदस्य कॉमा से अलग होते हैं और अंत में कॉमा नहीं लगता। |
| ऐरे | [1, "two", null] | किसी भी मान की क्रमबद्ध सूची; अलग-अलग प्रकार मिलाए जा सकते हैं। |
| स्ट्रिंग | "caf\u00e9 \"quoted\"" | सिर्फ़ डबल कोट; कंट्रोल कैरेक्टर एस्केप करने होंगे; \u एस्केप में चार हेक्स अंक होते हैं। |
| संख्या | -12.5e3 | सिर्फ़ दशमलव: वैकल्पिक माइनस, शुरुआत में शून्य नहीं, वैकल्पिक भिन्न और घातांक। NaN या Infinity नहीं। |
| true, false और null | true | छोटे अक्षरों में, बिना कोट के। |
पार्सर क्या अस्वीकार करता है
नीचे दिया हर इनपुट उसी JSON.parse को दिया गया था जो फ़ॉर्मैटर इस्तेमाल करता है, जब यह पेज बनाया गया।
| इनपुट | समस्या | JSON.parse |
|---|---|---|
{"a": 1,} | अंत में अतिरिक्त कॉमा | अस्वीकार |
{'a': 1} | सिंगल कोट वाली स्ट्रिंग | अस्वीकार |
{"a": 1 /* note */} | कमेंट | अस्वीकार |
{a: 1} | बिना कोट की की | अस्वीकार |
{"n": NaN} | NaN JSON संख्या नहीं है | अस्वीकार |
{"n": 012} | शुरुआत में शून्य | अस्वीकार |
{"n": 0x1F} | हेक्साडेसिमल संख्या | अस्वीकार |
JSON स्ट्रिंग में एस्केप
| अक्षर | JSON में लिखा रूप |
|---|---|
| डबल कोट | "\"" |
| बैकस्लैश | "\\" |
| लाइन फ़ीड | "\n" |
| टैब | "\t" |
| कैरिज रिटर्न | "\r" |
| कंट्रोल कैरेक्टर U+0001 | "\u0001" |
| फ़ॉरवर्ड स्लैश (एस्केप वैकल्पिक) | "/" |
| गैर-ASCII अक्षर (एस्केप ज़रूरी नहीं) | "é" |
सही JSON डॉक्यूमेंट किन नियमों का पालन करता है
JSON का स्टैंडर्ड RFC 8259 है (मूल रूप से ECMA-404 जैसा ही)। एक डॉक्यूमेंट में सिर्फ़ एक वैल्यू होती है: ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, true, false या null। ऑब्जेक्ट की कीज़ हमेशा डबल कोट्स में लिखी स्ट्रिंग होती हैं। स्ट्रिंग में सिर्फ़ डबल कोट्स चलते हैं, और कोट, बैकस्लैश तथा U+0020 से नीचे के हर कंट्रोल कैरेक्टर को एस्केप करना ज़रूरी है; इसलिए स्ट्रिंग के अंदर टैब और लाइन ब्रेक \t और \n के रूप में लिखे जाते हैं। RFC 8259 यह भी कहता है कि सिस्टम के बीच भेजा जाने वाला JSON UTF-8 में होना चाहिए।
नंबर दशमलव में होते हैं: शुरुआत में ज़ीरो नहीं, हेक्साडेसिमल नहीं, NaN या Infinity नहीं, और आगे प्लस का चिह्न नहीं। इस फ़ॉर्मेट में कमेंट और आख़िरी कॉमा (ट्रेलिंग कॉमा) की भी अनुमति नहीं है। असल में ज़्यादातर गलतियाँ इन्हीं दो नियमों से होती हैं, क्योंकि JavaScript ऑब्जेक्ट लिटरल, JSON5 और कई कॉन्फ़िग फ़ाइलें दोनों को मान लेती हैं। नीचे दी गई रेफ़रेंस टेबल हर आम गलती को उसी पार्सर में डालकर बनाई गई है जिसका इस्तेमाल फ़ॉर्मेटर करता है।
प्रिटी-प्रिंट, मिनिफाई और सॉर्ट
प्रीटी-प्रिंट करने पर लाइन ब्रेक और इंडेंटेशन जुड़ जाते हैं ताकि स्ट्रक्चर पढ़ने में आसान हो; JavaScript प्रोजेक्ट में दो स्पेस सबसे आम हैं, Python के json.dumps(indent=4) के साथ चार स्पेस आम हैं, और टैब से हर पाठक अपनी चौड़ाई चुन सकता है। मिनिफ़ाई करने पर हर गैरज़रूरी स्पेस हट जाता है, जिससे API पेलोड छोटा होता है और डॉक्यूमेंट लॉग या एनवायरनमेंट वेरिएबल के लिए एक ही लाइन में आ जाता है।
कीज़ सॉर्ट करें हर ऑब्जेक्ट के सदस्यों को अक्षर क्रम में जमाता है, नेस्टेड ऑब्जेक्ट में भी। JSON ऑब्जेक्ट परिभाषा से ही बिना क्रम के होते हैं, इसलिए सॉर्ट करने से मतलब नहीं बदलता, लेकिन अलग-अलग सिस्टम के दो डॉक्यूमेंट की तुलना करना काफ़ी आसान हो जाता है। ध्यान रखें कि पार्स करने पर नंबर JavaScript डबल बन जाते हैं: 2^53 (9,007,199,254,740,992) से बड़े पूर्णांक, जैसे कुछ डेटाबेस ID, दोबारा फ़ॉर्मेट करने पर सटीकता खो देते हैं, इसलिए उन्हें स्ट्रिंग के रूप में रखें।
JSON से दूसरे फॉर्मेट में
फ़ॉर्मेट किया हुआ डॉक्यूमेंट पढ़ना आसान होता है, लेकिन कभी-कभी आपको उसे किसी और रूप में चाहिए होता है। ऑब्जेक्ट्स की ऐरे JSON को CSV में बदलें से स्प्रेडशीट बन जाती है, और डेटा कन्वर्टर पूरी फ़ाइलों को JSON, XML, YAML और CSV के बीच बदल देता है।
अक्सर पूछे जाने वाले सवाल
- कमेंट वाले JSON को फॉर्मेटर क्यों रिजेक्ट कर देता है?
- स्टैंडर्ड JSON में कमेंट का सिंटैक्स नहीं है; RFC 8259 ने इसे जानबूझकर छोड़ा है। कमेंट हटा दें, या अगर फ़ाइल पढ़ने वाला टूल JSONC या JSON5 सपोर्ट करता है तो फ़ाइल को उसी फ़ॉर्मेट में रखें।
- JSON एरर में "Unexpected token" का क्या मतलब है?
- पार्सर को ऐसी जगह कोई कैरेक्टर मिला जो वहाँ नहीं आ सकता, जैसे सिंगल कोट, } से पहले ट्रेलिंग कॉमा या बिना कोट्स की की। दिखाई गई लाइन और कॉलम उसी कैरेक्टर की ओर इशारा करते हैं।
- क्या कीज़ सॉर्ट करने से मेरा डेटा बदल जाता है?
- नहीं। JSON में ऑब्जेक्ट सदस्यों के क्रम का कोई मतलब नहीं होता, इसलिए सॉर्ट किया हुआ डॉक्यूमेंट बराबर ही है। ऐरे का क्रम मायने रखता है और उसे कभी नहीं बदला जाता।
- फॉर्मेट करने के बाद कोई लंबा नंबर क्यों बदल गया?
- JavaScript नंबर को 64-बिट फ़्लोट के रूप में रखता है, जो पूर्णांकों को सिर्फ़ 2^53 तक ठीक-ठीक दर्शा सकता है। इससे बड़े ID पार्स होते समय राउंड हो जाते हैं; हर अंक सुरक्षित रखने के लिए उन्हें स्ट्रिंग के रूप में भेजें।
- क्या पेस्ट करने की जगह JSON फ़ाइल को फॉर्मेट कर सकते हैं?
- फ़ाइल को किसी भी टेक्स्ट एडिटर में खोलें, सब सेलेक्ट करें और यहाँ पेस्ट कर दें। दसियों मेगाबाइट की बहुत बड़ी फ़ाइलें टेक्स्ट एरिया में दिखाते समय टैब को धीमा कर सकती हैं।