JSON—JavaScript Object Notation—संरचित डेटा विनिमय के लिए सर्वव्यापी, पाठ-आधारित प्रारूप है। इसे IETF द्वारा RFC 8259 और Ecma International द्वारा ECMA-404के रूप में मानकीकृत किया गया है, जो मिलकर आधुनिक API, लॉग, कॉन्फ़िग और डेटाबेस को शक्ति देने वाले कॉम्पैक्ट, भाषा-अज्ञेयवादी सिंटैक्स को परिभाषित करते हैं।
एक JSON मान या तो एक ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, या शाब्दिक true, false, या null में से एक है; ऑब्जेक्ट स्ट्रिंग्स को मानों पर मैप करते हैं और ऐरे क्रमबद्ध मान रखते हैं—संरचनात्मक वर्णों के आसपास महत्वहीन व्हाइटस्पेस की अनुमति है (RFC 8259, ECMA-404)। यद्यपि JSON जावास्क्रिप्ट से उत्पन्न हुआ है, यह भाषा-स्वतंत्र है और लगभग हर जगह समर्थित है (MDN: JSON)। तार पर, वास्तविक और अनुशंसित एन्कोडिंग UTF-8 है (RFC 8259 §8.1)। अतिरिक्त इंटरॉप सुरक्षा के लिए, I-JSON प्रोफ़ाइल (RFC 7493) एन्कोडिंग और संख्यात्मक श्रेणियों के आसपास के नियमों को कसता है।
जावास्क्रिप्ट में, वैश्विक JSON ऑब्जेक्ट दो वर्कहॉर्स को उजागर करता है:JSON.parse (एक वैकल्पिक reviver के साथ) और JSON.stringify (सुंदर मुद्रण के लिए रिप्लेसर/स्पेसिंग के साथ), जैसा कि MDN पर प्रलेखित है (parse, stringify)।
JSON की संख्या व्याकरण दशमलव है, लेकिन युक्ति परिशुद्धता या पूर्णांक/फ्लोट भेद को निर्धारित नहीं करती है। कार्यान्वयन उन्हें कैसे प्रस्तुत करना है यह चुनते हैं (RFC 8259 §6)। जावास्क्रिप्ट और Node.js में, Number IEEE-754 डबल परिशुद्धता है, जिसका अर्थ है कि केवल [−(2^53−1), 2^53−1] में पूर्णांक ही बिल्कुल सुरक्षित हैं—देखें Number.MAX_SAFE_INTEGER और BigInt प्रकार। यही कारण है कि सार्वजनिक API अक्सर ID को स्ट्रिंग के रूप में भेजते हैं और "सुरक्षित पूर्णांक" को स्पष्ट रूप से मान्य करते हैं।
जैसे-जैसे उपयोग परिपक्व हुआ, JSON को संबोधित करने और संशोधित करने के लिए मानक उभरे। JSON पॉइंटर (RFC 6901) मानों का पता लगाने के लिए एक छोटा, स्लैश-सीमांकित सिंटैक्स है (उदाहरण के लिए, /a/b/0) जिसमें ~ और / के लिए एस्केपिंग नियम हैं। JSON पैच (RFC 6902) आंशिक अपडेट को क्रमबद्ध संचालन (add, remove, replace, move, copy, test) के रूप में मॉडल करता है और application/json-patch+json के रूप में यात्रा करता है। सरल अंतर के लिए, JSON मर्ज पैच (RFC 7386) एक दस्तावेज़-आकार का मर्ज का उपयोग करता है: वर्तमान फ़ील्ड जोड़े/बदले जाते हैं; एक फ़ील्ड को null पर सेट करने से यह हट जाता है। कई फ्रेमवर्क बॉक्स से बाहर एक या दोनों रूपों का समर्थन करते हैं।
JSON स्वयं स्कीमा-रहित है, लेकिन पारिस्थितिक तंत्र सत्यापन, दस्तावेज़ीकरण और कोडजेन के लिए स्कीमा पर निर्भर करते हैं। JSON स्कीमा 2020-12 परिवार type, properties, items, और संरचना कीवर्ड जैसी बाधाओं को निर्दिष्ट करता है, और OpenAPI 3.1के साथ संरेखित होता है। कोड-जनरेशन-केंद्रित वर्कफ़्लो के लिए, JSON प्रकार परिभाषा (RFC 8927) एक जानबूझकर कम अभिव्यंजक भाषा प्रदान करता है जो मुख्यधारा के प्रकार प्रणालियों के लिए अनुमानित रूप से मैप करता है।
क्लासिक JSON प्रति पेलोड एक पूर्ण पाठ की अपेक्षा करता है, जो स्ट्रीमिंग लॉग और लंबे समय तक चलने वाली प्रतिक्रियाओं को जटिल बनाता है। दो पैटर्न मदद करते हैं:
application/json-seq के रूप में पंजीकृत है।जब बैंडविड्थ या गति हावी होती है, तो "बाइनरी JSON" प्रारूप JSON के डेटा मॉडल को संरक्षित करते हैं जबकि दक्षता के लिए मानव पठनीयता का व्यापार करते हैं:
क्योंकि JSON सिर्फ पाठ है, अधिकांश जोखिम इस बात से आते हैं कि आप इसे कैसे परिवहन और संभालते हैं:
<script> के माध्यम से डेटा का अनुरोध करना एक कॉलबैक के साथ) क्रॉस-ओरिजिन अनुरोधों के लिए एक प्री-CORS वर् कअराउंड था लेकिन खतरनाक है—यह मनमाना स्क्रिप्ट निष्पादित करता है। CORS को वास्तविक application/json प्रतिक्रियाओं के साथ पसंद करें (OWASP: JSONP दुरुपयोग)।JSON ने RFC 4627 (2006)के तहत शुरुआत की; प ंजीकृत मीडिया प्रकार application/jsonहै, जिसका विनिर्देश अब RFC 8259की ओर इशारा करता है। JSON प्रतिक्रियाओं पर "Charset" पैरामीटर आमतौर पर अनावश्यक होते हैं क्योंकि UTF-8 सार्वजनिक इंटरनेट पर डिफ़ॉल्ट है।
डेवलपर्स अक्सर कॉन्फ़िग में टिप्पणियां, अनुगामी अल्पविराम, या एकल-उद्धृत स्ट्रिंग्स चाहते हैं। यह मानक JSON के बाहर है, लेकिन JSON5 मानव-संपादित फ़ाइलों के लिए एक अच्छी तरह से प्रलेखित सुपरसेट प्रदान करता है। जब तक आप दोनों सिरों को नियंत्रित नहीं करते, तब तक सार्वजनिक API पर JSON5 भेजने से बचें।
JSON की सफलता एक छोटे सतह क्षेत्र, व्यापक भाषा समर्थन, और आसन्न मानकों की एक अंगूठी—पॉइंटर्स, पैचिंग, स्कीमा, अनुक्रम—से आती है जो वितरित प्रणालियों की गन्दी वास्तविकताओं को कवर करती है। मूल सिद्धांतों (सिंटैक्स, एन्कोडिंग, संख्याएं) को समझें, सही आसन्न मानकों पर झुकें, और यह स्टैक और सेवाओं में लाभांश का भुगतान करता रहेगा (RFC 8259, ECMA-404, RFC 6901, RFC 6902, RFC 7386, JSON Schema, JTD, RFC 7464, NDJSON)।
JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) एक हल्का डेटा-इंटरचेंज प्रारूप है जो मनुष्यों के लिए पढ़ना और लिखना आसान है और मशीनों के लिए पार्स और जेनरेट करना आसान है। यह वेब अनुप्रयोगों में डेटा संचारित करने के लिए व्यापक रूप से उपयोग किया जाता है।
JSON को फॉर्मेट करना उचित इंडेंटेशन और लाइन ब्रेक जोड़कर इसे मानव-पठनीय बनाता है। यह विशेष रूप से तब उपयोगी है जब मिनिफाइड या संपीड़ित JSON डेटा के साथ काम कर रहे हों, डिबगिंग, या API प्रतिक्रियाओं की समीक्षा कर रहे हों।
JSON वैलिडेशन जांचता है कि आपकी JSON स्ट्रिंग JSON विनिर्देश के अनुरूप है या नहीं। यह सिंटेक्स त्रुटियों की पहचान करता है जैसे कि लापता अल्पविराम, बिना बंद ब्रैकेट, या अनुचित उद्धरण, आपको जल्दी त्रुटियों को पकड़ने में मदद करता है।
कोड व्यू सिंटेक्स हाइलाइटिंग के साथ फॉर्मेट किए गए JSON को टेक्स्ट के रूप में प्रदर्शित करता है, जैसे यह एक कोड एडिटर में दिखाई देता है। ट्री व्यू JSON को एक इंटरैक्टिव, संक्षिप्त संरचना के रूप में प्रस्तुत करता है जहां आप नेस्टेड ऑब्जेक्ट्स और एरेज़ का विस्तार और पतन कर सकते हैं।
हां! सभी JSON फॉर्मेटिंग और वैलिडेशन पूरी तरह से आपके ब्राउज़र में होता है। आपका डेटा कभी भी आपके कंप्यूटर को नहीं छोड़ता है, पूर्ण गोपनीयता और सुरक्षा सुनिश्चित करता है।
हां, आप 'फ़ाइल खोलें' बटन का उपयोग करके JSON फ़ाइल अपलोड कर सकते हैं। उपकरण फ़ाइल को पढ़ेगा और तुरंत फॉर्मेट किए गए आउटपुट को प्रदर्शित करेगा।
सामान्य JSON त्रुटियों में शामिल हैं: कुंजी-मान जोड़े के बीच लापता अल्पविराम, स्ट्रिंग्स के लिए डबल कोट्स के बजाय सिंगल कोट्स का उपयोग, ट्रेलिंग कॉमा, बिना बंद ब्रैकेट या ब्रेसेस, और बिना उद्धरण कुंजी।
हां, फॉर्मेट किए गए JSON को अपने क्लिपबोर्ड पर कॉपी करने के लिए 'कॉपी करें' बटन का उपयोग करें। यह साफ किए गए JSON को आपके कोड या दस्तावेज़ में पेस्ट करने के लिए उपयोगी है।