JSON डेटा (.json)
RFC मानकJavaScript Object Notation (JSON) डेटा आदान-प्रदान के लिए एक हल्का, मानव-पठनीय पाठ प्रारूप है, जो पूरी तरह से भाषा-स्वतंत्र है और वेब API के लिए सार्वभौमिक रूप से उपयोग किया जाता है।
JSON को HTML में कन्वर्ट करें
मुफ्त इन-ब्राउज़र JSON से HTML कन्वर्टर। अपने डिवाइस पर तुरंत फ़ाइलें कन्वर्ट करें।
JSON ऑनलाइन कंप्रेस करें
निजी - फ़ाइलें कभी आपके डिवाइस से बाहर नहीं जातीं
निरीक्षण और मेटाडेटा
ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके JSON फ़ाइलों की पहचान करते हैं:
बाइट-स्तरीय हेडर हस्ताक्षर (मैजिक बाइट्स)
ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके JSON फ़ाइलों की पहचान करते हैं:
HEX हस्ताक्षर (ऑफ़सेट 0):
7B या 5BASCII निरूपण: { or [
मानकीकरण: RFC 8259 / ECMA-404 / ISO/IEC 21778
तकनीकी विनिर्देश
| कंटेनर आर्किटेक्चर | हल्का, पाठ-आधारित, भाषा-स्वतंत्र डेटा आदान-प्रदान प्रारूप |
| कंप्रेशन | Gzip / Brotli / Zstandard पाठ संपीड़न (आमतौर पर 80%-90% अनुपात प्राप्त करता है) |
| बाइट एंडियानेस | UTF-8 एन्कोडेड यूनिकोड (बाइट ऑर्डर मार्क / BOM की अनुशंसा नहीं की जाती है) |
| कलर स्पेस | लागू नहीं |
| चैनल और संरचना | छह बुनियादी डेटा प्रकार: ऑब्जेक्ट, एरे, स्ट्रिंग, नंबर, बूलियन, नल |
| अधिकतम आयाम | असीमित; केवल पार्सर मेमोरी और अधिकतम स्ट्रिंग लंबाई द्वारा सीमित |
| पारदर्शिता | लागू नहीं |
| स्ट्रीमिंग और प्रोग्रेसिव | NDJSON (न्यूलाइन डेलिमिटेड JSON) / JSON लाइन्स प्रगतिशील स्ट्रीम प्रोसेसिंग को सक्षम बनाता है |
तकनीकी तुलना मैट्रिक्स: JSON बनाम प्रतियोगी
| तकनीकी विशेषता | JSON (वर्तमान) | YAML | XML | Protocol Buffers |
|---|---|---|---|---|
| सिंटैक्स जटिलता | न्यूनतम (6 प्रकार, सख्त सिंटैक्स) | उच्च (इंडेंटेशन-आधारित, जटिल विनिर्देश) | उच्च (लंबे समापन टैग, नेमस्पेस) | स्कीमा-परिभाषित बाइनरी वायर प्रारूप |
| पार्सिंग प्रदर्शन | सभी आधुनिक भाषाओं में अत्यधिक तेज़ | धीमा (जटिल इंडेंटेशन पार्सिंग) | मध्यम से धीमा (भारी DOM निर्माण) | अल्ट्रा-फास्ट (शून्य-कॉपी बाइनरी डीसीरियलाइजेशन) |
| समर्थित टिप्पणियाँ | नहीं (मेटाडेटा वृद्धि को रोकने के लिए जानबूझकर बाहर रखा गया) | हाँ (# टिप्पणियाँ) | हाँ (<!-- टिप्पणियाँ -->) | .proto फ़ाइलों में हाँ |
| नेटवर्क पेलोड आकार | कॉम्पैक्ट पाठ (बहुत उच्च gzip अनुपात) | कॉम्पैक्ट पाठ | शब्दशः पाठ (भारी टैग दोहराव) | अल्ट्रा-कॉम्पैक्ट बाइनरी |
सामान्य करप्शन मोड और हेक्स रिकवरी गाइड
SyntaxError: JSON में X स्थान पर अप्रत्याशित , टोकन है।
मूल कारण: किसी एरे या ऑब्जेक्ट में अंतिम आइटम के बाद ट्रेलिंग कॉमा, जो RFC 8259 JSON में सख्ती से अवैध है।
रिकवरी: JSON.parse() में पास करने से पहले ऑब्जेक्ट कुंजियों और एरे प्रविष्टियों से ट्रेलिंग कॉमा हटा दें।
SyntaxError: JSON में अप्रत्याशित ' टोकन है।
मूल कारण: डबल कोट्स (") के बजाय सिंगल कोट्स ('') में संलग्न स्ट्रिंग्स या कुंजियाँ।
रिकवरी: सभी सिंगल-कोटेड स्ट्रिंग्स और कुंजियों को मानक डबल-कोटेड स्ट्रिंग्स से बदलें।
सुरक्षा विश्लेषण और पार्सर अटैक वेक्टर्स
JSON केवल पाठ-आधारित है और प्रत्यक्ष कोड निष्पादन से सुरक्षित है, लेकिन अविश्वसनीय JSON को पार्स करने से प्रोटोटाइप प्रदूषण, ReDoS, या मेमोरी थकावट हो सकती है।
ज्ञात अटैक वेक्टर्स
- प्रोटोटाइप प्रदूषण: JavaScript अनुप्रयोगों में Object.prototype को संशोधित करने वाली '__proto__' या 'constructor' नामक कुंजियाँ।
- गहराई से नेस्टेड JSON संरचनाओं (जैसे 10,000 शुरुआती कोष्ठक) के माध्यम से स्टैक ओवरफ़्लो सेवा से इनकार।
- संख्यात्मक सटीकता की हानि: 2^53 - 1 (9,007,199,254,740,991) से बड़ी JavaScript संख्याएँ चुपचाप सटीकता खो देती हैं।
सुरक्षात्मक सर्वोत्तम प्रथाएँ: eval() के साथ कभी भी JSON का मूल्यांकन न करें। JSON.parse() का उपयोग करें और पुनरावर्ती ऑब्जेक्ट मर्ज फ़ंक्शन में '__proto__' गुणों को सैनिटाइज करें।
ऐतिहासिक मूल और मील के पत्थर
मुख्य लाभ और खूबियाँ
- मानव-पठनीय, स्व-वर्णनात्मक और संक्षिप्त पाठ संरचना।
- JavaScript इंजन (JSON.parse) और प्रत्येक प्रमुख प्रोग्रामिंग भाषा में अंतर्निहित मूल पार्सिंग समर्थन।
- सख्त विनिर्देश मनमाना कोड निष्पादन को रोकता है।
तकनीकी सीमाएँ और कमियाँ
- टिप्पणियों, ट्रेलिंग कॉमा (अंतिम अल्पविराम), या सर्कुलर ऑब्जेक्ट संदर्भों के लिए कोई समर्थन नहीं।
- कोई मूल बाइनरी प्रकार नहीं (बाइनरी डेटा को base64-एन्कोडेड होना चाहिए, जिससे आकार 33% बढ़ जाता है)।
- प्रोटोकॉल बफर्स या मैसेजपैक जैसे बाइनरी प्रारूपों की तुलना में अक्षम सीरियलाइजेशन।
रोचक तकनीकी जानकारी
- डगलस क्रॉकफ़र्ड ने मूल JSMin JSON टूल में सॉफ़्टवेयर लाइसेंस खंड 'सॉफ़्टवेयर का उपयोग अच्छे के लिए किया जाएगा, बुरे के लिए नहीं' जोड़ा था।
- JSON JavaScript सिंटैक्स का एक सख्त सबसेट है, लेकिन ES2019 तक, कच्चे अनएस्केप किए गए U+2028 और U+2029 वर्ण JSON में वैध थे लेकिन JavaScript स्ट्रिंग्स में अमान्य थे।
- डगलस क्रॉकफ़र्ड ने पाया कि शुरुआती वेब ब्राउज़र ECMAScript 5 में समर्पित JSON.parse() API के मानकीकृत होने से पहले JavaScript के मूल eval() का उपयोग करके सीधे JSON का ऑब्जेक्ट्स में मूल्यांकन कर सकते थे।
अक्सर पूछे जाने वाले तकनीकी प्रश्न
JSON टिप्पणियों की अनुमति क्यों नहीं देता है?
JSON व्याकरण टिप्पणियों की अनुमति नहीं देता। एक्सटेंशन और ऐप-विशिष्ट डेटा को अलग-अलग कार्यान्वयन अलग तरह से संभाल सकते हैं, इसलिए केवल फ़ॉर्मैट से अंतर-संचालनीयता की गारंटी नहीं मिलती।
सटीकता खोए बिना JSON में 64-बिट पूर्णांक कैसे संग्रहीत करें?
JavaScript का मूल Number प्रकार एक IEEE 754 डबल-प्रेसीजन फ्लोट है, जो केवल 2^53 - 1 तक के पूर्णांकों का सटीक समर्थन करता है। 64-बिट पूर्णांकों (जैसे डेटाबेस आईडी या टाइमस्टैम्प) को JSON में स्ट्रिंग्स (जैसे '1234567890123456789') के रूप में सीरियलाइज किया जाना चाहिए।
JSON और NDJSON / JSON लाइन्स में क्या अंतर है?
मानक JSON एक संपूर्ण पेलोड को एक एकल रूट ऑब्जेक्ट या एरे में लपेटता है, जिसके लिए मूल्यांकन करने से पहले पार्सर्स को संपूर्ण पाठ लोड करने की आवश्यकता होती है। NDJSON (न्यूलाइन डेलिमिटेड JSON) न्यूलाइन वर्णों (\n) के साथ व्यक्तिगत वैध JSON रिकॉर्ड को अलग करता है, जिससे विशाल बहु-गीगाबाइट डेटासेट की मेमोरी-कुशल लाइन-दर-लाइन स्ट्रीमिंग सक्षम होती है।
संबंधित JSON रूपांतरण जोड़े
JSON डेटा को HTML सोर्स में बदलने से कच्चे संरचित की-वैल्यू जोड़े मानव-पठनीय वेब दस्तावेजों में बदल जाते हैं जो ब्राउज़र रेंडरिंग के लिए तैयार होते हैं।
HTML सोर्स को JSON डेटा में बदलने से प्रोग्रामेटिक प्रोसेसिंग और API इंजेशन के लिए मानव-पठनीय वेब दस्तावेज़ संरचित की-वैल्यू जोड़ों में बदल जाते हैं।
एक SQL डंप टेक्स्ट स्क्रिप्ट को JSON डेटा एक्सपोर्ट में बदलना आधुनिक वेब ऐप्स के लिए कठोर रिलेशनल डेटाबेस टेबल को लचीले, नेस्टेड ऑब्जेक्ट्स में परिवर्तित करता है।
असंरचित JSON टेक्स्ट फाइलों को संरचित SQLite रिलेशनल डेटाबेस में बदलना बड़े डेटा रिकॉर्ड की तेज़ इंडेक्सिंग और क्वेरी की अनुमति देता है।
एडोब स्वैच एक्सचेंज फ़ाइलों को कलर जेसन संरचनाओं में बदलने से आधुनिक वेब अनुप्रयोगों के लिए बाइनरी डिज़ाइन पैलेट पठनीय टेक्स्ट ऑब्जेक्ट्स में बदल जाते हैं।
कलर जेसन टेक्स्ट डेटा को एडोब एएसई बाइनरी स्वैच में बदलने से वेब-आधारित डिज़ाइन टोकन और पेशेवर डेस्कटॉप लेआउट एप्लिकेशन जुड़ जाते हैं।
GIMP पैलेट टेक्स्ट फ़ाइलों को कलर JSON संरचनाओं में बदलने से वेब एप्लिकेशन जटिल पार्सिंग स्क्रिप्ट के बिना कलर स्वैच को सीधे पढ़ सकते हैं।
संरचित कलर JSON फ़ाइलों को CSS वेरिएबल्स में बदलने से कच्चे डेटा ऑब्जेक्ट वेबसाइटों के लिए मूल स्टाइलिंग गुणों में बदल जाते हैं।