JSON: बुनियादी उपयोग। JSON प्रारूप: यह क्या है, फ़ाइल कैसे बनाएं और खोलें JSON फ़ाइल बनाना

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) एक डेटा ट्रांसफर प्रारूप है। जैसा कि नाम से पता चलता है, प्रारूप जावास्क्रिप्ट प्रोग्रामिंग भाषा पर आधारित है, लेकिन यह अन्य भाषाओं (पायथन, रूबी, पीएचपी, जावा) में भी उपलब्ध है।

JSON .json एक्सटेंशन का उपयोग करता है। इसे दूसरों में उपयोग करते समय फ़ाइल स्वरूप(उदा. .html) JSON स्ट्रिंग को एक वेरिएबल को उद्धृत या असाइन किया गया है। यह प्रारूप वेब सर्वर और क्लाइंट या ब्राउज़र के बीच आसानी से स्थानांतरित हो जाता है।

हल्का और समझने में आसान, JSON XML का एक बढ़िया विकल्प है।

यह ट्यूटोरियल आपको JSON के लाभों, वस्तुओं, सामान्य संरचना और वाक्यविन्यास से परिचित कराएगा।

JSON सिंटैक्स और संरचना

एक JSON ऑब्जेक्ट कुंजी-मूल्य रूप में होता है और आमतौर पर घुंघराले ब्रेसिज़ में लिखा जाता है। JSON के साथ काम करते समय, सभी ऑब्जेक्ट एक .json फ़ाइल में संग्रहीत होते हैं, लेकिन वे प्रोग्राम के संदर्भ में अलग-अलग ऑब्जेक्ट के रूप में भी मौजूद हो सकते हैं।

JSON ऑब्जेक्ट इस तरह दिखता है:

"first_name" : "जॉन",
"अंतिम_नाम" : "स्मिथ",
"स्थान": "लंदन",
"ऑनलाइन" : सत्य,
"अनुयायी" : 987

यह एक बहुत ही सरल उदाहरण है. एक JSON ऑब्जेक्ट में कई पंक्तियाँ हो सकती हैं।

जैसा कि आप देख सकते हैं, एक ऑब्जेक्ट कुंजी-मूल्य जोड़े से बना होता है जो घुंघराले ब्रेसिज़ में संलग्न होते हैं। JSON में अधिकांश डेटा ऑब्जेक्ट के रूप में लिखा जाता है।

कुंजी और मान के बीच एक कोलन रखा जाता है। प्रत्येक जोड़ी के बाद आपको अल्पविराम लगाना होगा। परिणाम है:

"कुंजी": "मूल्य", "कुंजी": "मूल्य", "कुंजी": "मूल्य"

JSON कुंजी बाईं ओर है. कुंजी को दोहरे उद्धरण चिह्नों में रखा जाना चाहिए। किसी भी वैध स्ट्रिंग को कुंजी के रूप में उपयोग किया जा सकता है। एक ऑब्जेक्ट के भीतर, सभी कुंजियाँ अद्वितीय होनी चाहिए। कुंजी में एक स्थान ("प्रथम नाम") हो सकता है, लेकिन प्रोग्रामिंग में ऐसी कुंजी तक पहुंचने में समस्या हो सकती है। इसलिए, स्पेस के बजाय अंडरस्कोर ("first_name") का उपयोग करना बेहतर है।

JSON मान कॉलम के दाईं ओर हैं। किसी भी साधारण डेटा प्रकार को मान के रूप में उपयोग किया जा सकता है:

  • स्ट्रिंग्स
  • नंबर
  • वस्तुओं
  • सरणियों
  • बूलियन डेटा (सही या गलत)

मानों को जटिल डेटा प्रकारों (उदाहरण के लिए, ऑब्जेक्ट या JSON सरणियों) द्वारा भी दर्शाया जा सकता है।

JSON ऊपर सूचीबद्ध प्रत्येक डेटा प्रकार के लिए अलग-अलग सिंटैक्स का समर्थन करता है: यदि मान एक स्ट्रिंग द्वारा दर्शाया गया है, तो इसे उद्धृत किया जाएगा, लेकिन यदि यह एक संख्या है, तो इसे उद्धृत नहीं किया जाएगा।

आमतौर पर, .json फ़ाइलों में डेटा एक कॉलम में लिखा जाता है, लेकिन JSON को एक पंक्ति में भी लिखा जा सकता है:

("प्रथम_नाम": "जॉन", "अंतिम_नाम": "स्मिथ", "ऑनलाइन": सत्य, )

इस प्रकार JSON डेटा आमतौर पर अन्य फ़ाइल प्रकारों में लिखा जाता है।

किसी कॉलम में JSON डेटा लिखकर, आप फ़ाइल की पठनीयता में सुधार करते हैं (विशेषकर यदि फ़ाइल में बहुत अधिक डेटा है)। JSON स्तंभों के बीच रिक्त स्थान को अनदेखा करता है, इसलिए आप उनका उपयोग अपने डेटा को प्रबंधनीय संख्या में स्तंभों में विभाजित करने के लिए कर सकते हैं।

"first_name" : "जॉन",
"अंतिम_नाम" : "स्मिथ",
"ऑनलाइन" : सत्य

कृपया ध्यान दें: JSON ऑब्जेक्ट बहुत समान हैं जावास्क्रिप्ट ऑब्जेक्ट, लेकिन वे समान प्रारूप नहीं हैं। उदाहरण के लिए, आप जावास्क्रिप्ट में फ़ंक्शंस का उपयोग कर सकते हैं, लेकिन JSON में नहीं।

JSON का मुख्य लाभ यह है कि इस प्रारूप में डेटा कई लोकप्रिय प्रोग्रामिंग भाषाओं द्वारा समर्थित है, इसलिए इसे जल्दी से स्थानांतरित किया जा सकता है।

अब आप परिचित हो गए हैं बुनियादी वाक्यविन्यास JSON. लेकिन JSON फ़ाइलों में जटिल, पदानुक्रमित संरचनाएँ हो सकती हैं जिनमें नेस्टेड सरणियाँ और ऑब्जेक्ट शामिल होते हैं।

JSON में जटिल प्रकार

JSON नेस्टेड ऑब्जेक्ट और ऐरे को स्टोर कर सकता है, जिसे उन्हें सौंपी गई कुंजी के मान के रूप में पास किया जाएगा।

नेस्टेड वस्तुएं

नीचे आपको एक उदाहरण मिलेगा - user.json फ़ाइल, जिसमें उपयोगकर्ता डेटा है। प्रत्येक उपयोगकर्ता के लिए

("जॉन", "जेसी", "ड्रू", "जेमी") एक नेस्टेड ऑब्जेक्ट को एक मान के रूप में पारित किया जाता है, जिसमें बदले में कुंजी और मान भी शामिल होते हैं।

नोट: पहला नेस्टेड JSON ऑब्जेक्ट लाल रंग में हाइलाइट किया गया है।

"जॉन" :(
"उपयोगकर्ता नाम": "जॉन",
"स्थान": "लंदन",
"ऑनलाइन" : सत्य,
"अनुयायी" : 987

"जेसी" :(
"उपयोगकर्ता नाम": "जेसी",
"स्थान": "वाशिंगटन",
"ऑनलाइन" : गलत,
"अनुयायी" : 432

"खींचा" :(
"उपयोगकर्ता नाम": "ड्रू",
"स्थान": "पेरिस",
"ऑनलाइन" : गलत,
"अनुयायी" : 321

"जेमी" :(
"उपयोगकर्ता नाम": "जेमी",
"स्थान" : "बर्लिन",
"ऑनलाइन" : सत्य,
"अनुयायी" : 654

ध्यान दें कि घुंघराले ब्रेसिज़ का उपयोग नेस्टेड ऑब्जेक्ट और मुख्य ऑब्जेक्ट दोनों में किया जाता है। नेस्टेड ऑब्जेक्ट में अल्पविराम का उपयोग नियमित रूप से उसी तरह किया जाता है।

नेस्टेड सारणियाँ

डेटा को JSON में संलग्न किया जा सकता है जावास्क्रिप्ट सरणियाँ, जिसे मूल्यों के रूप में पारित किया जाएगा। जावास्क्रिप्ट में, किसी ऐरे की शुरुआत और अंत का उपयोग किया जाता है वर्ग कोष्ठक(). सारणी डेटा का एक क्रमबद्ध संग्रह है जिसमें विभिन्न प्रकार के डेटा हो सकते हैं।

एक सारणी का उपयोग बड़ी मात्रा में डेटा को स्थानांतरित करने के लिए किया जाता है जिसे समूहीकृत किया जा सकता है। उदाहरण के लिए, आइए उपयोगकर्ता डेटा रिकॉर्ड करने का प्रयास करें।

{
"first_name" : "जॉन",
"अंतिम_नाम" : "स्मिथ",
"स्थान": "लंदन",
"वेबसाइटें" : [

"विवरण" : "कार्य",
"यूआरएल": "https://www.johnsmithsite.com/"

},
{

"विवरण" : "ट्यूटोरियल",
"यूआरएल": "https://www.johnsmithsite.com/tutorials"

"सामाजिक मीडिया" : [

"विवरण": "ट्विटर",
"लिंक": "https://twitter.com/johnsmith"

"विवरण" : "फ़ेसबुक",
"लिंक": "https://www.facebook.com/johnsmith"

"विवरण" : "जीथूब",
"लिंक": "https://github.com/johnsmith"

कुंजियाँ "वेबसाइट" और "सोशल_मीडिया" को मान के रूप में सारणी सौंपी गई हैं, जिन्हें वर्गाकार कोष्ठक में रखा गया है।

नेस्टेड सरणियों और ऑब्जेक्ट का उपयोग करके, आप एक जटिल डेटा पदानुक्रम बना सकते हैं।

JSON या XML?

XML (एक्स्टेंसिबल मार्कअप लैंग्वेज) आपको डेटा को ऐसे रूप में संग्रहीत करने की अनुमति देता है जो मनुष्यों और मशीनों के लिए समझना आसान है। XML प्रारूप बड़ी संख्या में प्रोग्रामिंग भाषाओं द्वारा समर्थित है।

XML और JSON में बहुत कुछ समानता है. हालाँकि, XML को बहुत अधिक टेक्स्ट की आवश्यकता होती है, जिसका अर्थ है कि ऐसी फ़ाइलें बड़ी होती हैं और पढ़ने और लिखने में अधिक कठिन होती हैं। इसके अलावा, XML को केवल XML दुभाषिया का उपयोग करके संसाधित किया जाता है, जबकि JSON को एक साधारण फ़ंक्शन का उपयोग करके संसाधित किया जा सकता है। JSON के विपरीत, XML ऐरे संग्रहीत नहीं कर सकता।

आइए दो फ़ाइलों की तुलना करें: उनमें समान डेटा है, लेकिन पहला XML प्रारूप में लिखा गया है, और दूसरा JSON में लिखा गया है।

उपयोगकर्ता.xml

जॉन लंदन

जेसी वाशिंगटन

ड्रयू पेरिस

जेमी बर्लिन

उपयोगकर्ता.json
("उपयोगकर्ता": [

("उपयोगकर्ता नाम": "जॉन", "स्थान": "लंदन"),
("उपयोगकर्ता नाम": "जेसी", "स्थान": "वाशिंगटन"),
("उपयोगकर्ता नाम": "ड्रू", "स्थान": "पेरिस"),
("उपयोगकर्ता नाम": "जेमीमैंटिसश्रिम्प", "स्थान": "बर्लिन")

JSON एक बहुत ही कॉम्पैक्ट प्रारूप है और इसमें XML जितने टैग की आवश्यकता नहीं होती है। इसके अतिरिक्त, XML, JSON के विपरीत, सरणियों का समर्थन नहीं करता है।

यदि आप HTML से परिचित हैं, तो आपने इस पर ध्यान दिया होगा एक्सएमएल प्रारूपइसके समान (विशेष रूप से टैग)। उदाहरण के लिए, JSON सरल है, इसके लिए कम टेक्स्ट की आवश्यकता होती है और AJAX अनुप्रयोगों में इसका उपयोग करना आसान है।

निःसंदेह, प्रारूप को आवेदन की आवश्यकताओं के आधार पर चुना जाना चाहिए।

JSON के लिए उपकरण

JSON का उपयोग आमतौर पर जावास्क्रिप्ट में किया जाता है, लेकिन यह प्रारूप अन्य प्रोग्रामिंग भाषाओं में व्यापक रूप से उपयोग किया जाता है।

JSON संगतता और प्रसंस्करण के बारे में अधिक जानकारी प्रोजेक्ट वेबसाइट और jQuery लाइब्रेरी पर पाई जा सकती है।

शुरुआत से JSON लिखना दुर्लभ है। आमतौर पर, डेटा स्रोत से लोड किया जाता है या JSON में परिवर्तित किया जाता है। आप ओपन-सोर्स टूल मिस्टर का उपयोग करके CSV या टैब-डीलिमिटेड डेटा को JSON में परिवर्तित कर सकते हैं। डेटा परिवर्तक. XML को JSON में बदलने के लिए और इसके विपरीत, utilities-online.info का उपयोग करें। स्वचालित उपकरणों के साथ काम करते समय, परिणामों की जांच करना सुनिश्चित करें।

JSONLint सेवा का उपयोग करके JSON फ़ाइलों (परिवर्तित डेटा सहित) का निरीक्षण किया जा सकता है। वेब विकास संदर्भ में JSON का परीक्षण करने के लिए, JSFiddle देखें।

निष्कर्ष

JSON एक सरल और हल्का डेटा प्रारूप है। JSON फ़ाइलों को स्थानांतरित करना, संग्रहीत करना और उपयोग करना आसान है।

आज JSON का उपयोग अक्सर API में किया जाता है।

घोषणा

JSON वेबसाइट फ़ाइल स्वरूप

JSON फ़ाइलों का उपयोग मानव-पठनीय पाठ-आधारित प्रारूप में सरल डेटा सेट की संरचनाओं को संग्रहीत करने के लिए किया जाता है। JSON फ़ाइलें मूल रूप से जावास्क्रिप्ट प्रोग्रामिंग भाषा से निकटता से संबंधित थीं, लेकिन इस तथ्य के कारण इस पलयह प्रारूप बड़ी संख्या में सॉफ़्टवेयर एपीआई का समर्थन करता है, इसे एक ऐसा प्रारूप माना जा सकता है जो किसी भी प्रोग्रामिंग भाषा से बंधा नहीं है। XML प्रारूप का यह विकल्प Ajax वेब अनुप्रयोगों द्वारा सबसे अधिक उपयोग किया जाता है।

टेक्निकल डिटेल JSON फ़ाइलों के बारे में

JSON फ़ाइलों का उपयोग डेटा एक्सचेंज फ़ाइलों के रूप में किया जाता है। यह आदान-प्रदान अक्सर इंटरनेट के माध्यम से जुड़े कंप्यूटरों के बीच होता है। इस प्रकार, JSON एक्सटेंशन वाली फ़ाइलों को कंप्यूटर की हार्ड ड्राइव पर सहेजा जाना बहुत दुर्लभ है। हालाँकि, कुछ एप्लिकेशन अभी भी इस प्रारूप का उपयोग करते हैं। उदाहरण के लिए, डेटा गूगल प्रोफाइल+ को JSON प्रारूप और वेब ब्राउज़र में सहेजा और लोड किया जाता है मोज़िला फ़ायरफ़ॉक्सभंडारण के लिए इस प्रारूप की फ़ाइलों का उपयोग करता है बैकअप प्रतिलिपियाँबुकमार्क

अतिरिक्त जानकारी JSON प्रारूप के बारे में

वेरिएबल, ऐरे और ऑब्जेक्ट डेटा प्रतिनिधित्व का एक परिचित और सुविधाजनक रूप हैं। ब्राउज़र भाषा जावास्क्रिप्ट में डेटा का वर्णन करना प्रथागत है, जो भाषा में करना आवश्यक नहीं है पीएचपी सर्वर. JSON प्रारूप आपको उन्हें एक संपूर्ण में सारांशित करने की अनुमति देता है और प्रोग्रामिंग भाषा पर ध्यान केंद्रित नहीं करता है। इस स्थिति में, डेटा जोड़े में बदल जाता है: "नाम = मान"। उनमें से प्रत्येक का मूल्य ऐसे युग्मों का संग्रह भी हो सकता है।

JSON को घुंघराले ब्रेसिज़ के साथ जोड़ने की प्रथा है और बाद वाला काफी उचित है, क्योंकि JSON प्रारूप = जावास्क्रिप्ट ऑब्जेक्ट नोटेशन है। हाल के विशेष रूप से गतिशील वर्षों में बहुत कुछ बदल गया है। जो कुछ किसी विशिष्ट उद्देश्य के लिए बनाया गया था वह अक्सर अप्रत्याशित परिणाम लाता था या नए क्षितिज खोलता था।

डेटा विनिमय: ब्राउज़र - सर्वर

AJAX तकनीक पारंपरिक, नियमित पेज रिफ्रेश बन गई है पूरी तरह सेलोकप्रिय होना बंद हो गया है. एक विज़िटर, एक साइट खोलता है, आंशिक डेटा एक्सचेंजों की एक श्रृंखला शुरू करता है, जब कुछ पृष्ठ केवल उस स्थान पर बदलते हैं जो प्रासंगिक है।

ऐसा माना जाता है कि JSON का उद्भव AJAX के उपयोग से जुड़ा है, लेकिन वास्तव में, साहचर्य और इसके ऑब्जेक्ट नोटेशन (वस्तुओं का वर्णन और उपयोग करने के लिए वाक्यविन्यास की विशेषताएं) के बीच डेटा के आदान-प्रदान की तुलना में JSON से कहीं अधिक संबंधित संबंध हैं। ब्राउज़र और सर्वर.

चूंकि आधुनिक साइटों के पृष्ठों की सामग्री वास्तव में "विशाल" हो गई है, इसलिए डेटा विनिमय के प्रारूप की दक्षता ने विशेष महत्व हासिल कर लिया है। इसका मतलब यह नहीं है कि JSON एक नया डेटा प्रतिनिधित्व बन गया है, लेकिन यह तथ्य कि यह लंबे समय से जावास्क्रिप्ट सिंटैक्स का एक तत्व रहा है, महत्वपूर्ण है।

चरों के नामकरण में सिरिलिक का उपयोग एक बहुत ही अप्रत्याशित घटना (बकवास) है, लेकिन यह काम करता है नवीनतम संस्करणक्रोम, फ़ायरफ़ॉक्स और यहां तक ​​कि इंटरनेट एक्सप्लोरर 11.

सिरिलिक और JSON

बेशक, इस पूरी तरह से अप्रत्याशित घटना का उपयोग करने का कोई मतलब नहीं है, यह याद रखना कि रूसी अक्षरों में लिखे गए चर के मूल्य कितनी आसानी से अस्पष्ट हो जाते हैं: हम नामों के बारे में क्या कह सकते हैं, खासकर बाहरी लोगों के बारे में।

यह संदिग्ध है कि सिरिलिक नामों में पहल को ब्राउज़र के बाहरी वातावरण द्वारा समर्थित किया जाएगा, जिसके साथ इसे लगातार निपटना होगा। लेकिन यह तथ्य इस सरल कारण से ध्यान देने योग्य है कि JSON प्रारूप डेवलपर की इच्छानुसार नाम और मान लिखने की क्षमता है। यह महत्वपूर्ण है, क्योंकि प्रत्येक कार्य में एप्लिकेशन क्षेत्र का वर्णन उसकी आवश्यकता के अनुसार डिबगिंग को सरल बनाता है और त्रुटियों की संख्या को कम करता है।

इससे कोई फर्क नहीं पड़ता कि वास्तव में वाक्यात्मक नवाचार - JSON - का आधार क्या था, यह महत्वपूर्ण है कि इसने पत्राचार स्थापित करने का कानूनी अधिकार और वास्तविक अवसर दिया: "कोई भी नाम = कोई भी मूल्य"।

हमें जावास्क्रिप्ट भाषा को श्रद्धांजलि अर्पित करनी चाहिए: सिंटैक्स द्वारा जो प्रदान किया जाता है वह डेवलपर को बाध्य नहीं करता है और उस पर कुछ भी नहीं थोपता है। डेवलपर अपने उपयोग के लिए डेटा मॉडल और एल्गोरिदम को बेहतर ढंग से बनाने के लिए भाषा सिंटैक्स का स्वतंत्र रूप से उपयोग करता है।

पीएचपी और JSON

JSON प्रारूप में डेटा स्वीकार करके, सर्वर (विशेष रूप से PHP के माध्यम से) इसे वैसे ही संसाधित करने और परिणाम को समान प्रारूप में ब्राउज़र पर वापस लौटाने की क्षमता प्रदान करता है। PHP स्रोत सरणी:

  • $cJSON = सरणी ("ए"=> "अल्फ़ा", "बी"=> "बीटा", "जी"=> "गामा")।

ब्राउज़र पर डिलीवरी के लिए JSON में कनवर्ट करें:

  • $cJS = json_encode($cJSON).

परिणाम:

  • ("ए":"अल्फा","बी":"बीटा","जी":"गामा")।

फोटो में दिखाए गए घोंसले की अनुमति है।

यहां जेनरेट किए गए ऐरे को स्वचालित इंडेक्स "0" के साथ "स्वयं में" एक नए तत्व के साथ जोड़ा गया था, और फिर निर्दिष्ट इंडेक्स "z" के साथ जोड़ा गया था।

Json_decode() JSON स्ट्रिंग को PHP ऐरे में कनवर्ट करता है। फ़ंक्शंस और विस्फोट() में हेरफेर करके समान परिणाम प्राप्त किए जा सकते हैं। कुछ मामलों में यह विकल्प बेहतर है.

घोंसले का स्तर

तत्वों को ब्राउज़र साइड और सर्वर साइड दोनों पर नेस्ट किया जा सकता है। व्यवहार में, JSON प्रारूप (RFC 4627 मानक विवरण) नेस्टिंग के 4 से अधिक स्तर प्रदान करता है, लेकिन इस सुविधा का दुरुपयोग नहीं किया जाना चाहिए।

उचित पर्याप्तता से आगे कभी नहीं जाना सबसे अच्छा है; यह कोड को पढ़ने योग्य बनाता है, जिससे अन्य डेवलपर्स के लिए डीबग करना और समझना आसान हो जाता है।

JSON को आमतौर पर डेटा निर्माण के रूप में जाना जाता है जो XML की तुलना में सरल होते हैं और लोगों और कंप्यूटर दोनों के लिए समझने योग्य होते हैं। यह सच है जब डेटा की मात्रा छोटी है और डेवलपर ने नेस्टिंग का स्तर बुद्धिमानी से चुना है। अन्य सभी मामलों में, कोष्ठकों की संख्या गिनना और समझना ब्राउज़र पक्ष और सर्वर पक्ष दोनों पर कठिन है।

JSON फ़ाइलें

व्यवहार में JSON का उपयोग अक्सर मानव-पठनीय छोटी स्ट्रिंग तक सीमित नहीं होता है। कोई भी डेटा निर्माण हमेशा व्यावहारिक होता है। साथ ही, JSON का उपयोग वास्तविक कार्य डेटा (एंटरप्राइज़ स्टाफ) और अस्थायी डेटा (ऑब्जेक्ट कैश) को लागू करने के लिए प्रभावी ढंग से किया जा सकता है।

एंटरप्राइज स्टाफ और JSON प्रारूप: उदाहरण

आमतौर पर एक व्यक्ति के बारे में रिकॉर्ड में अंतिम नाम, प्रथम नाम, संरक्षक, जन्म का वर्ष, विशेषता, शिक्षा, ... और कुछ अन्य सरल मूल्य होते हैं। यहां तक ​​कि विशेष रूप से मांग वाली कंपनियों में भी, एक व्यक्ति के बारे में रिकॉर्ड एक दर्जन या दो क्षेत्रों से अधिक नहीं होगा। यह बोधगम्य है और इसे डेटाबेस स्ट्रिंग में रखा जा सकता है।

यदि कोई कंपनी कई लोगों को रोजगार देती है, तो यह एक बात है, लेकिन यदि हजारों लोग हैं, तो यह पूरी तरह से अलग है। आप डेटाबेस का उपयोग जारी रख सकते हैं, लेकिन इसे फ़ाइल के रूप में संग्रहीत करना उपयोग के लिए अधिक व्यावहारिक और सुलभ लगता है।

JSON सामान्य है पाठ फ़ाइल. स्टाफिंग टेबल का मामला कहने की जरूरत नहीं है। आप इसे कभी भी पढ़ सकते हैं. किसी भी टेक्स्ट एडिटर में ओपनिंग और एडिटिंग भी उपलब्ध है, जिसमें फ़ाइल की सामग्री में अपनी स्वयं की सेवा जानकारी जोड़ने की आदत नहीं है। सामान्य तौर पर, *.json ब्राउज़र और फ़ाइल दोनों के अंदर शुद्ध पाठ है - एक स्ट्रिंग।

फोटो उस ऑब्जेक्ट का कैश दिखाता है जो चित्र बनाता है, एक उदाहरण।

यह एक साइट द्वारा उत्पन्न फ़ाइल की सामग्री का एक उदाहरण है जो मग और सिरेमिक पर रंगीन 3डी प्रिंटिंग प्रदान करती है। स्वाभाविक रूप से, ऐसे JSON प्रारूप के होने पर, इसे कैसे खोला जाए यह तय करना वास्तव में समस्याग्रस्त है। हालाँकि, इस और इसी तरह के मामलों में फ़ाइल को पढ़ने में कोई समस्या नहीं है: PHP फ़ाइल को पढ़ता है, इसे पार्स करता है और ब्राउज़र को भेजता है। विज़िटर द्वारा बदला गया डेटा सर्वर पर लौटा दिया जाता है और वापस लिखा जाता है।

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

JSON का उपयोग अक्सर सेवा जानकारी को संग्रहीत करने और उपयोग करने के लिए किया जाता है - यह कोई स्टाफिंग टेबल नहीं है, और न ही डेवलपर और न ही साइट विज़िटर को इसे देखने की आवश्यकता है।

एक्सएमएल और JSON

"हर चीज़ के लिए एक समय होता है" एक शास्त्रीय ज्ञान है जिसे प्रोग्रामिंग के आगमन से पहले भी एक सिद्धांत के रूप में स्वीकार किया जाता है। "कुछ भी नहीं बस प्रकट होता है" - यह भी मनुष्य द्वारा कृत्रिम भाषा में पहला सुगम कार्यक्रम लिखने से पहले हुआ था।

डेटा प्रारूप वास्तविक आवश्यकताओं से उत्पन्न होते हैं और प्राप्त ज्ञान पर आधारित होते हैं। HTML का अपना पथ है, XML का अपना पथ है, और JSON जावास्क्रिप्ट ऑब्जेक्ट लॉजिक है जो अन्य भाषाओं तक विस्तारित है। एक की दूसरे से तुलना करना अच्छी बात नहीं है। हर किसी का अपना।

XML अपने कार्यों को शानदार ढंग से पूरा करता है और स्पष्ट रूप से इतिहास नहीं बनने जा रहा है। और JSON का उपयोग 2006 तक किया गया था, यह सिर्फ इतना है कि प्रत्येक डेवलपर ने अपने डेटा का प्रतिनिधित्व करने के लिए कुछ विकल्प घोषित करना अपना कर्तव्य नहीं समझा;

व्यवहार में ऐसे मामले सामने आए हैं जब प्रोग्राम BASIC में लिखे गए थे जो JSON का उपयोग नहीं करते थे, लेकिन "नाम = मान" जोड़े को पूरी तरह से संग्रहीत करते थे और उन्हें सही समय पर सही एल्गोरिदम के लिए उपलब्ध कराते थे।

विशेष वर्ण ("`", "~", "|", ...) और डेटा प्रारूप

जावास्क्रिप्ट में सहयोगी सरणियों और वस्तुओं के साथ काम करने की आदत JSON के उपयोग को स्वाभाविक और सुविधाजनक बनाती है। यह वास्तव में एक बेहतरीन प्रारूप है, लेकिन स्ट्रिंग और सरणियों में हेरफेर करके अलग करने और जोड़ने की क्षमता की जड़ें बहुत गहरी हैं।

जावास्क्रिप्ट भाषा के जुड़ने/विभाजित कार्य और PHP भाषा के विस्फोट/विस्फोट दोनों प्रारूपों के सुविधाजनक और कुशल उपयोग की अनुमति देते हैं एक्सएमएल डेटा, JSON, और आपका अपना संस्करण। उत्तरार्द्ध अक्सर इष्टतम होता है, जबकि पहले दो सामान्य उपयोग विकल्पों के लिए आदर्श होते हैं। यदि जानकारी किसी अन्य डेवलपर, सर्वर, फ़ाइल या डेटाबेस में स्थानांतरित की जा रही है, तो XML और JSON खोजने का कोई बेहतर तरीका नहीं है। हर कोई उनके साथ काम करता है, इसलिए सूचना के प्रसारण/प्राप्ति के लिए टिप्पणियों की आवश्यकता नहीं होती है।

एंड्रॉइड में JSON का उपयोग करना

एंड्रॉइड में JSON प्रारूप में डेटा पढ़ना और लिखना न केवल आदर्श है, बल्कि इस विशेष डेटा प्रारूप के साथ काम करने पर भी कई वस्तुएं केंद्रित हैं।

इस स्थिति में, JSON प्रारूप का उपयोग किया जाता है। शायद यह सच है, लेकिन सवाल सामाजिक नेटवर्क की अभूतपूर्वता के बारे में नहीं है, बल्कि इस तथ्य के बारे में है कि "नाम = मूल्य" प्रारूप में जानकारी प्रस्तुत करना प्रोग्रामिंग और उपयोग दोनों के लिए सुविधाजनक है। सख्त और जटिल "एक्सएमएल" के विपरीत, यह वास्तव में एक मानव-अनुकूल प्रारूप है।

सहयोगी सारणियाँ

ऐसा होता है कि चर का वर्णन किया जाना चाहिए (जावास्क्रिप्ट) या कम से कम प्रारंभिक मान निर्दिष्ट किया जाना चाहिए (PHP)। दोनों ही मामलों में, वेरिएबल अपना प्रकार बहुत आसानी से बदल सकता है। यदि आवश्यक हो तो भाषा यह रूपांतरण स्वचालित रूप से करती है।

लेकिन वेरिएबल को अपना नाम क्यों नहीं बदलना चाहिए, एल्गोरिदम के निष्पादन के दौरान प्रकट होना चाहिए, और जब इसकी आवश्यकता नहीं रह जाती है तो गायब क्यों नहीं होना चाहिए? साहचर्य सरणियाँ इस समस्या को हल करती हैं, लेकिन फिर ऐसे अपेक्षाकृत गतिशील चर का उपयोग करते समय, सरणी नाम और संबंधित वाक्य रचनाएँ उसी स्थान पर आएँगी जहाँ उनका उपयोग किया जाता है।

यह परिस्थिति विशेष रूप से PHP में उच्चारित की जाती है, लेकिन आप इसके साथ, वास्तव में, चर नाम में "$" प्रतीक और ऑब्जेक्ट के अंदर "$this->" संयोजन के साथ रख सकते हैं। एक ही समय में जावास्क्रिप्ट और PHP में प्रोग्रामिंग करते समय, पहले तो आप वास्तव में आश्चर्यचकित हो जाते हैं कि सब कुछ कितना अलग है, लेकिन फिर सब कुछ इतना परिचित और स्वाभाविक हो जाता है...

सहयोगी सरणी -> JSON

इस उदाहरण में, एक *.docx दस्तावेज़ PHPOffice/PHPWord लाइब्रेरी का उपयोग करके बनाया गया है, और aProperties सरणी में इस दस्तावेज़ के गुण (लेखक, कंपनी, शीर्षक, श्रेणी, निर्माण तिथि...) शामिल हैं।

दूसरी सारणी में पृष्ठ के लिए डेटा है:

  • अभिविन्यास (परिदृश्य या सामान्य);
  • ऊर्ध्वाधर और क्षैतिज आयाम;
  • इंडेंट (हाशिये बाएँ, ऊपर, नीचे, दाएँ);
  • शीर्षलेख और पादलेख।

दस्तावेज़ उस सर्वर पर तैयार किया जाता है जहां PHPOffice/PHPWord लाइब्रेरी स्थापित है। साइट आपको जावास्क्रिप्ट का उपयोग करके इन सरणियों के मूल्यों को प्रबंधित करने की अनुमति देती है। JSON प्रारूप में परिणाम सर्वर पर वापस लौटाया जाता है और PHP एल्गोरिदम में, इसकी संरचनाओं में, यानी सरणियों में उपयोग किया जाता है।

गतिशील चर

JSON प्रारूप गतिशील चर की समस्या का समाधान करता है। यहां आप अनावश्यक वाक्यविन्यास अव्यवस्था के बिना वेरिएबल बना सकते हैं, बदल सकते हैं और हटा सकते हैं। यह अच्छा दिखता है और जावास्क्रिप्ट में उपयोग किया जाता है।

इस उदाहरण में, GetOjInfo() फ़ंक्शन किसी ऑब्जेक्ट से मान नाम और मान पुनर्प्राप्त करता है। प्रारंभ में, ojInfo वेरिएबल को निर्दिष्ट JSON स्ट्रिंग ऑब्जेक्ट में तीन तत्व होते हैं: नाम, आयु और कार्य। थोड़ी देर बाद स्टेटस वैरिएबल जोड़ा जाता है।

पहले डिलीट ऑपरेटर के बाद, ojInfo लाइन आयु तत्व खो देती है, दूसरे डिलीट के बाद यह कार्य तत्व खो देती है। यदि हम मानते हैं कि यह स्ट्रिंग वेरिएबल्स का एक चयन है जिसका एक निश्चित अर्थ है, तो JSON का उपयोग करके आप वास्तव में जावास्क्रिप्ट भाषा का वर्णन और प्रसंस्करण के परिचालन क्षेत्र (वाक्यविन्यास) के बाहर उनमें से किसी भी सेट को बना, बदल और हटा सकते हैं।

JSON प्रारूप इस विकल्प के लिए डिज़ाइन नहीं किया गया था, लेकिन यह संभव, व्यावहारिक और सुविधाजनक है।

), और स्वयं सर्वरों के बीच (HTTP सॉफ़्टवेयर इंटरफ़ेस)। JSON प्रारूप रिलेशनल डेटाबेस या फ़ाइल कैश में जटिल गतिशील संरचनाओं को संग्रहीत करने के लिए भी उपयुक्त है।

चूंकि JSON जावास्क्रिप्ट सिंटैक्स का एक सबसेट है, इसलिए इसे अंतर्निहित eval() फ़ंक्शन का उपयोग करके जल्दी से डीसेरिएलाइज़ किया जा सकता है। इसके अलावा, पूरी तरह कार्यात्मक जावास्क्रिप्ट फ़ंक्शन सम्मिलित करना संभव है। PHP में, संस्करण 5.2.0 से शुरू होकर, JSON समर्थन को json_decode() और json_encode() फ़ंक्शंस के रूप में कोर में शामिल किया गया है, जो स्वयं JSON डेटा प्रकारों को संबंधित PHP प्रकारों में परिवर्तित करते हैं और इसके विपरीत।

वाक्य - विन्यास

JSON दो संरचनाओं पर बनाया गया है:

  • कुंजी/मान जोड़े का एक सेट. विभिन्न भाषाओं में इसे इस प्रकार लागू किया जाता है एक वस्तु, रिकॉर्ड , संरचना , शब्दकोश , हैश तालिका , कुंजीयुक्त सूची या साहचर्य सारणी . कुंजी केवल एक स्ट्रिंग हो सकती है, मान केवल कोई भी रूप हो सकता है।
  • मूल्यों का एक क्रमांकित सेट. कई भाषाओं में इसे इस तरह लागू किया जाता है सरणी, वेक्टर, सूची या अनुक्रम।

ये सार्वभौमिक डेटा संरचनाएँ हैं। सैद्धांतिक रूप से, सब कुछ आधुनिक भाषाएंप्रोग्रामिंग किसी न किसी रूप में उनका समर्थन करती है। चूँकि JSON का उपयोग विभिन्न प्रोग्रामिंग भाषाओं के बीच डेटा का आदान-प्रदान करने के लिए किया जाता है, इसलिए इसे इन संरचनाओं पर बनाना समझ में आता है।

JSON में निम्नलिखित फॉर्म का उपयोग किया जाता है:

  • एक ऑब्जेक्ट घुंघराले ब्रेसिज़ () में संलग्न नाम/मूल्य जोड़े का एक अव्यवस्थित सेट है। नाम और मान के बीच एक चिन्ह होता है ": " , और नाम/मान जोड़े को अल्पविराम द्वारा अलग किया जाता है।
  • एक सरणी (एक-आयामी) मानों का एक समूह है जिसमें क्रमांक (सूचकांक) होते हैं। सारणी वर्गाकार कोष्ठकों में संलग्न है। मानों को अल्पविराम द्वारा अलग किया जाता है.
  • मूल्य हो सकता है रेखादोहरे उद्धरण चिह्नों में, संख्या, कीमत सत्यया असत्य, वस्तु, सरणी, या मूल्य व्यर्थ. इन संरचनाओं को एक-दूसरे के भीतर समाहित किया जा सकता है।
  • एक स्ट्रिंग शून्य या अधिक यूनिकोड वर्णों का एक क्रमबद्ध सेट है, जो बैकस्लैश एस्केप अनुक्रमों का उपयोग करके दोहरे उद्धरण चिह्नों में संलग्न है। वर्णों को एक साधारण स्ट्रिंग के रूप में दर्शाया गया है।
  • नाम एक स्ट्रिंग है.

रेखाभाषाओं और जावा में एक स्ट्रिंग के समान। संख्यायह भी C या Java संख्या के समान ही है, सिवाय इसके कि केवल दशमलव प्रारूप का उपयोग किया जाता है। किन्हीं दो वर्णों के बीच रिक्त स्थान डाला जा सकता है।

निम्नलिखित उदाहरण किसी व्यक्ति का वर्णन करने वाली वस्तु का JSON प्रतिनिधित्व दिखाता है। वस्तु है डोरीप्रथम और अंतिम नाम फ़ील्ड, पते का वर्णन करने वाली एक वस्तु, और टेलीफोन नंबरों की सूची वाली एक सरणी।

( "प्रथम नाम": "इवान", "अंतिम नाम": "इवानोव", "पता": ( "सड़क पता": "मोस्कोवस्को श., 101, उपयुक्त 101", "शहर": "लेनिनग्राद", "डाक कोड": 101101 ) , "फ़ोन नंबर" : [ "812 123-1234", "916 123-4567" ] )

XML में, ऐसी संरचना कुछ इस तरह दिखाई देगी:

इवान इवानोव मोस्कोवस्को श., 101, उपयुक्त 101 लेनिनग्राद 101101 812 123-1234 916 123-4567

812 123-1234 916 123-4567

वाईएएमएल के साथ तुलना

कार्यात्मक और वाक्यात्मक दोनों दृष्टि से, JSON YAML भाषा का एक उपसमूह है। विशेष रूप से, YAML 1.2 विनिर्देश बताता है कि "कोई भी JSON फ़ाइल एक वैध YAML फ़ाइल है।" सबसे आम YAML पार्सर JSON को भी प्रोसेस कर सकता है। संस्करण 1.2 से पहले के YAML विनिर्देश में JSON को पूरी तरह से कवर नहीं किया गया था, मुख्य रूप से YAML में UTF-32 के लिए मूल समर्थन की कमी के साथ-साथ अल्पविराम सीमांकक के बाद एक स्थान की आवश्यकता के कारण। इसके अतिरिक्त, JSON विनिर्देश में /* */ शैली टिप्पणियाँ शामिल हैं।

YAML में सबसे महत्वपूर्ण अंतर सिंटैक्स एक्सटेंशन का सेट है जिसका JSON में कोई एनालॉग नहीं है:

रिलेशनल: YAML रिलेशनल डेटा का समर्थन करता है: YAML दस्तावेज़ में, आप एक एंकर का उल्लेख कर सकते हैं जो फ़ाइल/स्ट्रीम में पहले हुआ था। पुनरावर्ती संरचनाओं को इस प्रकार व्यक्त किया जा सकता है। एक्स्टेंसिबल: YAML आदिम (यानी स्ट्रिंग्स, नंबर, बूलियन) से परे एक्स्टेंसिबल डेटा प्रकारों का समर्थन करता है। ब्लॉक: YAML में, इंडेंटेड ब्लॉक सिंटैक्स उपलब्ध है; यह आपको अनावश्यक प्रतीकों (सभी प्रकार के कोष्ठक, उद्धरण, आदि) का उपयोग किए बिना संरचित डेटा का वर्णन करने की अनुमति देता है।

JSON स्कीमा

JSON स्कीमा JSON दस्तावेज़ की संरचना का वर्णन करने वाली भाषाओं में से एक है। JSON सिंटैक्स का उपयोग करता है. XML स्कीमा, RelaxNG, Kwalify की अवधारणाओं पर आधारित। JSON स्कीमा एक स्व-वर्णनात्मक भाषा है: जब उपयोग किया जाता है, तो डेटा को संसाधित करने और इसकी वैधता का वर्णन करने के लिए समान क्रमबद्धता/deserialization उपकरण का उपयोग किया जा सकता है।

Ajax में JSON का उपयोग करना

निम्नलिखित उदाहरण जावास्क्रिप्ट कोड दिखाता है कि ब्राउज़र सर्वर से JSON-स्वरूपित ऑब्जेक्ट का अनुरोध करने के लिए XMLHttpRequest का उपयोग कैसे कर सकता है (प्रोग्राम का सर्वर पक्ष छोड़ा गया है; इसमें वह कोड होना चाहिए जो अनुरोधों के जवाब में डेटा को JSON स्ट्रिंग के रूप में भेजता है) यूआरएल)।

वार द_ऑब्जेक्ट; var http_request = new XMLHttpRequest() ; http_request.open('GET', url, true); http_request.send(null); http_request.onreadystatechange = function() ( if ( http_request.readyState == 4 ) ( if ( http_request.status == 200 ) ( the_object = JSON.parse ( http_request.responseText ) ; ; ) else ( चेतावनी( "इसमें कोई समस्या थी यूआरएल।" ) ; ) http_request = null ; ) ) ;

ध्यान दें कि XMLHttpRequest का उपयोग करने का यह उदाहरण सभी ब्राउज़रों के लिए सार्वभौमिक नहीं है (इंटरनेट एक्सप्लोरर, ओपेरा, सफारी और मोज़िला पर आधारित ब्राउज़रों के लिए, कोड में कुछ अंतर होना चाहिए)। XMLHttpRequest का उपयोग समान मूल नीति के कारण सीमित है: अनुरोध की प्रतिक्रिया का यूआरएल उसी DNS डोमेन में होना चाहिए जिस सर्वर पर प्रतिक्रिया का अनुरोध करने वाला पृष्ठ स्थित है। एक विकल्प JSONP दृष्टिकोण है, जिसमें क्लाइंट और सर्वर के बीच पारित एक एन्कोडेड फ़ंक्शन कॉल का उपयोग करना शामिल है ताकि क्लाइंट तीसरे पक्ष के डोमेन से JSON-एन्कोडेड डेटा लोड कर सके, और कॉल करने वाले को पूरा होने की सूचना दे सके, हालांकि यह कुछ सुरक्षा जोखिम पेश करता है और अतिरिक्त सर्वर आवश्यकताएँ.

वैकल्पिक रूप से, पेज कोड एसिंक्रोनस रूप से JSON डेटा का अनुरोध करने के लिए तत्वों का उपयोग कर सकता है, या बस। XMLHttpRequest के व्यापक समर्थन से पहले ये दृष्टिकोण आम थे।

आप डायनामिक टैग का उपयोग करके JSON डेटा स्थानांतरित करने के लिए समान मूल नीति का भी उपयोग कर सकते हैं, लेकिन इसके परिणामस्वरूप कमजोर कोड होता है। इसे सुरक्षित विकल्प के तौर पर इस्तेमाल करने का सुझाव दिया गया है JSONअनुरोध.

सुरक्षा प्रश्न

हालाँकि JSON का उद्देश्य डेटा को क्रमबद्ध रूप में संप्रेषित करना है, लेकिन इसका सिंटैक्स इस प्रकार है जावास्क्रिप्ट सिंटैक्सऔर इससे कई सुरक्षा समस्याएं पैदा होती हैं. अक्सर, JSON प्रारूप में किसी बाहरी स्रोत से प्राप्त डेटा को संसाधित करने के लिए, eval() फ़ंक्शन को बिना किसी प्रारंभिक सत्यापन के लागू किया जाता है।

जावास्क्रिप्ट eval()

क्योंकि JSON जावास्क्रिप्ट कोड का एक वाक्यात्मक रूप से सही टुकड़ा प्रतीत होता है, जावास्क्रिप्ट प्रोग्राम में JSON डेटा को पार्स करने का सबसे सरल तरीका अंतर्निहित का उपयोग करना है जावास्क्रिप्ट कार्य eval() , जो जावास्क्रिप्ट अभिव्यक्तियों को निष्पादित करने के लिए डिज़ाइन किया गया है। इस दृष्टिकोण के साथ, अतिरिक्त पार्सर्स का उपयोग करने की कोई आवश्यकता नहीं है।

यदि उपयोग किए गए JSON डेटा का स्रोत विश्वसनीय नहीं है तो eval() तकनीक सिस्टम को असुरक्षित बना देती है ( अंग्रेज़ी). ऐसा डेटा कोड इंजेक्शन हमलों के लिए दुर्भावनापूर्ण जावास्क्रिप्ट कोड हो सकता है ( अंग्रेज़ी). इस भेद्यता का उपयोग करके, डेटा चोरी करना और प्रमाणीकरण बनाना संभव है। हालाँकि, अतिरिक्त डेटा सत्यापन टूल का उपयोग करके भेद्यता को समाप्त किया जा सकता है। उदाहरण के लिए, eval() को निष्पादित करने से पहले, बाहरी स्रोत से प्राप्त डेटा को नियमित अभिव्यक्तियों का उपयोग करके मान्य किया जा सकता है। JSON को परिभाषित करने वाला RFC यह जांचने के लिए निम्नलिखित कोड का उपयोग करने का सुझाव देता है कि क्या यह JSON प्रारूप के अनुरूप है

वर my_JSON_object = ! (/[^,:()\[\]0-9.\-+Eaeflnr-u \n\r\t]/ .test ( text.replace (/"(\\.|[^"\\] )*"/g , "" ) ) ) && eval("(" + text + ")" ) ;

eval() का एक सुरक्षित विकल्प कैसे प्रस्तावित किया गया है नयी विशेषता parseJSON(), जो केवल JSON डेटा को संसाधित कर सकता है। इसे ईसीएमएस्क्रिप्ट मानक के संस्करण 4 में पेश किया गया था और इसका वर्णन "JSON: XML के लिए एक कम वसा वाला विकल्प" लेख में किया गया है। यह वर्तमान में जावास्क्रिप्ट लाइब्रेरी के रूप में उपलब्ध है और इसे ईसीएमएस्क्रिप्ट के पांचवें संस्करण में शामिल किया जाएगा।

एंबेडेड JSON

वेब ब्राउज़र के हाल के संस्करणों में JSON के लिए अंतर्निहित समर्थन है और वे eval() फ़ंक्शन को कॉल किए बिना इसे संसाधित करने में सक्षम हैं, जो वर्णित समस्या का कारण बनता है। इस मामले में JSON प्रोसेसिंग आमतौर पर तेज़ होती है। इसलिए जून 2009 में, निम्नलिखित ब्राउज़र में अंतर्निहित JSON समर्थन था:

उपलब्ध होने पर कम से कम पांच लोकप्रिय जावास्क्रिप्ट लाइब्रेरी इनलाइन JSON का उपयोग करते हैं:

क्रॉस-डोमेन अनुरोध जालसाजी

JSON का ख़राब उपयोग साइटों को क्रॉस-साइट अनुरोध जालसाजी (CSRF या XSRF) के प्रति संवेदनशील बनाता है। क्योंकि टैग एक ऐसे स्रोत के उपयोग की अनुमति देता है जो उसी डोमेन से संबंधित नहीं है जिसका उपयोग करने वाला संसाधन, यह एक मनमाने पृष्ठ के संदर्भ में JSON डेटा की आड़ में कोड को निष्पादित करने की अनुमति देता है, जिससे पासवर्ड से समझौता करना संभव हो जाता है या किसी अन्य साइट पर अधिकृत उपयोगकर्ताओं की अन्य संवेदनशील जानकारी।

यह केवल एक समस्या प्रतीत होती है यदि JSON डेटा में संवेदनशील जानकारी होती है जिसे किसी तीसरे पक्ष द्वारा समझौता किया जा सकता है और यदि सर्वर एकल-मूल नीति पर निर्भर करता है ( अंग्रेज़ी), बाहरी अनुरोध का पता चलने पर डेटा तक पहुंच को अवरुद्ध करना। यह कोई समस्या नहीं है यदि सर्वर अनुरोध की वैधता निर्धारित करता है, डेटा केवल तभी प्रदान करता है जब वह सही हो। इसे निर्धारित करने के लिए HTTP कुकीज़ का उपयोग नहीं किया जा सकता है। HTTP कुकीज़ का विशेष उपयोग क्रॉस-साइट अनुरोध जालसाजी द्वारा किया जाता है।

जेएसओएनपी और जेएसओएनपीपी

JSONP (JSON पैडिंग) या "पैडिंग के साथ JSON" JSON का एक एक्सटेंशन है जब कॉलबैक फ़ंक्शन का नाम इनपुट तर्क के रूप में निर्दिष्ट किया जाता है।

तकनीक इस तथ्य पर आधारित है कि ब्राउज़र सुरक्षा नीति उस सर्वर के अलावा अन्य सर्वर तक पहुंचने के लिए टैग के उपयोग की अनुमति देती है जिससे पेज लोड किया गया था।

JSONP तकनीक का उपयोग किए बिना (अर्थात, केवल JSON डेटा एन्कोडिंग का उपयोग करके), सर्वर केवल डेटा वापस कर सकता है। उदाहरण के लिए इस प्रकार:

("पेपर": "ए4", "गिनती": 5)

हालाँकि, यह केवल डेटा है और ब्राउज़र को प्रभावित नहीं कर सकता।

JSONP तकनीक का उपयोग करके, कॉलबैक फ़ंक्शन का नाम कॉल लाइन (GET) में तीसरे पक्ष के सर्वर को भेज दिया जाता है:

यहां jsonp पैरामीटर में कॉलबैक फ़ंक्शन parseResponse का नाम शामिल है।

अब विदेशी सर्वर example.com निम्नलिखित कोड लौटा सकता है:

ParseResponse(( "पेपर": "ए4", "गिनती": 5))

कोड अब पहले डोमेन के जावास्क्रिप्ट फ़ंक्शन को कॉल करता है।

यह विचार मूल रूप से 2005 में MacPython ब्लॉग पर प्रस्तावित किया गया था, और वर्तमान में इसका उपयोग कई वेब 2.0 अनुप्रयोगों जैसे Dojo टूलकिट एप्लिकेशन, Google टूलकिट एप्लिकेशन और ज़ानॉक्स वेब सर्विसेज द्वारा किया जाता है। इस प्रोटोकॉल के आगे के विस्तार में अतिरिक्त तर्क शामिल करने का प्रस्ताव किया गया है, जैसे S3DB वेब सेवाओं के लिए JSONPP का समर्थन।

क्योंकि JSONP स्क्रिप्ट टैग का उपयोग करता है, कॉल अनिवार्य रूप से दुनिया के लिए खुली हैं। इस कारण से, JSONP संवेदनशील डेटा संग्रहीत करने के लिए अनुपयुक्त हो सकता है।

दूरस्थ साइटों से स्क्रिप्ट टैग सक्षम करने से उन्हें साइट पर कोई भी सामग्री प्रसारित करने की अनुमति मिलती है। यदि दूरस्थ साइट में कमजोरियाँ हैं जो जावास्क्रिप्ट इंजेक्शन की अनुमति देती हैं, तो मूल साइट भी उनसे प्रभावित हो सकती है।

JSONPP (पैडिंग के साथ पैरामीटरयुक्त JSON) पैडिंग के साथ पैरामीटरयुक्त JSON - JSONP विचार का विकास

JSONPP में स्रोत URL, फ़ंक्शन का नाम शामिल है जो JSON डेटा को संसाधित करेगा, डेटा प्राप्त करने के बाद eval के लिए एक लाइन, और डेटा को संसाधित करने के बाद eval के लिए एक लाइन शामिल है:

JSON_call(SRC, JSONP, JSONPP, ONLOAD);

अंततः पलट जाता है

उत्तर = JSONP(SRC) ( eval(JSONPP(ans) ) ; eval(ONLOAD) ; )

सामान्य तौर पर, JSONPP विचार के लिए मापदंडों की संख्या महत्वपूर्ण नहीं है। SRC, JSONP, JSONPP (और सर्वर साइड पर और फिर क्लाइंट साइड पर उनकी प्रोसेसिंग) JSONPP होने के लिए पर्याप्त हैं।

आइए S3DB सेवा के साथ काम करने का उदाहरण देखें।

फ़ंक्शन s3db_jsonpp_call(src, Next_eval) (var call = "call_" + Math .random() .toString() .replace (/\./g, "" ) ; var headID = document.getElementsByTagName ("head") [ 0 ] ; var स्क्रिप्ट = document.createElement ("स्क्रिप्ट" ); स्क्रिप्ट.आईडी = कॉल स्क्रिप्ट.टाइप = "टेक्स्ट/जावास्क्रिप्ट" ; // गद्देदार, पैरामीटरयुक्त json src = src+ "&format=json&jsonp=s3db_jsonpp&jsonpp=" + &onload=remove_element_by_id("" +script.id + "")" ;script.src = src;headID.appendChild (स्क्रिप्ट); // उत्तर पुनर्प्राप्त करें) फ़ंक्शन s3db_jsonpp(ans, jsonpp) ( eval(jsonpp); return ans ; ) फ़ंक्शन रिमूव_एलिमेंट_बाय_आईडी (आईडी) ( var e = document.getElementById (id); e.parentNode .removeChild (e); return false ; )

उदाहरण में, s3db_jsonpp_call() फ़ंक्शन DOM में मुख्य भाग में एक स्क्रिप्ट तत्व बनाता है, जिसका स्रोत JSONPP कॉल से मेल खाता है।

सर्वर से प्रतिक्रिया प्राप्त करने के बाद, s3db_jsonpp() को कॉल किया जाएगा - इसे कॉल पैरामीटर में पास किया जाता है, क्योंकि यह JSONP नियमों के अनुसार होना चाहिए।

अंदर s3db_jsonpp() eval(jsonpp) सक्रिय हो जाएगा और मान लौटा देगा।

eval(onload) को कॉल करने से हेड में बनाई गई स्क्रिप्ट की आईडी के साथ रिमूव_एलिमेंट_बी_आईडी() का निष्पादन होता है और अंततः इसे हटा दिया जाता है, क्योंकि इसका उपयोग किसी भी तरह से नहीं किया जाएगा क्योंकि उदाहरण में आईडी बहुत शुरुआत में यादृच्छिक रूप से उत्पन्न हुई थी। s3db_jsonpp_call() फ़ंक्शन। यह कॉल सर्वर प्रतिक्रिया में है.

वस्तु संदर्भ

JSON मानक ऑब्जेक्ट संदर्भों का समर्थन नहीं करता है, लेकिन Dojo टूलकिट दर्शाता है कि मानक JSON अतिरिक्त सम्मेलनों का उपयोग करके ऐसे संदर्भों का समर्थन कैसे कर सकता है। विशेष रूप से, dojox.json.ref मॉड्यूल कई प्रकार के लिंक के लिए समर्थन प्रदान करता है, जिसमें सर्कुलर, मल्टीपल, इंटर-डॉक्यूमेंट और आलसी लिंक शामिल हैं।

नोट्स भी देखें
  • YAML मार्कअप लैंग्वेज (YAML™) संस्करण 1.2 (अंग्रेजी) नहीं है। - वर्किंग ड्राफ्ट 2008-05-11. (दुर्गम लिंक - कहानी) 24 सितंबर 2009 को पुनःप्राप्त.
  • . रेडहैंडेड (07 अप्रैल 2005)। 25 सितम्बर 2012 को पुनःप्राप्त.
  • जेसन.कॉम JSON स्कीमा प्रस्ताव (दुर्गम लिंक - कहानी)
  • आरएफसी 4627
  • JSON: XML का वसा रहित विकल्प। संग्रहीत
  • json2.js (अंग्रेजी) । 12 फ़रवरी 2012 को मूल से संग्रहीत। 24 सितम्बर 2009 को पुनःप्राप्त।
  • एम्बेडेड JSON का उपयोग करना।
  • IE8 में एंबेडेड JSON। 12 फ़रवरी 2012 को मूल से संग्रहीत।
  • ओपेरा प्रेस्टो 2.5 (अंग्रेजी) (10 मार्च, 2010) में समर्थित वेब विनिर्देश। मूल से 12 फरवरी 2012 को संग्रहीत। 29 मार्च 2010 को लिया गया।
  • JSON ऑब्जेक्ट का ES 3.1 कार्यान्वयन।
  • टिकट #4429lang=en . 12 फ़रवरी 2012 को मूल से संग्रहीत।
  • टिकट #4429 (22 मई, 2009)। 12 फ़रवरी 2012 को मूल से संग्रहीत। 3 जुलाई 2009 को पुनःप्राप्त।
  • टिकट #8111lang=en . 12 फ़रवरी 2012 को मूल से संग्रहीत।
  • मूटूल्स कोर और अधिक 1.3.1. 12 फ़रवरी 2012 को मूल से संग्रहीत।
  • YUI 2: JSON उपयोगिता (1 सितंबर, 2009)। 12 फ़रवरी 2012 को मूल से संग्रहीत। 22 अक्टूबर 2009 को पुनःप्राप्त।
  • JSON सीखें (7 अप्रैल, 2010)। मूल से 12 फ़रवरी 2012 को संग्रहीत। 7 अप्रैल 2010 को पुनःप्राप्त।
  • जेरेमी ग्रॉसमैनजीमेल का उपयोग करके वेब अनुप्रयोगों के विरुद्ध उन्नत आक्रमण तकनीकें। व्हाइटहैट सुरक्षा. 12 फ़रवरी 2012 को मूल से संग्रहीत। 23 सितम्बर 2009 को पुनःप्राप्त।
  • __future__ आयात से * » रिमोट JSON - JSONP। Bob.pythonmac.org. 12 फ़रवरी 2012 को मूल से संग्रहीत। 8 सितम्बर 2008 को पुनःप्राप्त।
  • अल्मेडा, जोनास (11 जून, 2008)। "JSON, JSONP, JSONPP? "(S3DB). 2009-04-26 को पुनःप्राप्त.
  • RIAस्पॉटक्रॉस साइट XHR के लिए JSON P. (दुर्गम लिंक - कहानी)
  • डोजो में JSON संदर्भ। 12 फ़रवरी 2012 को मूल से संग्रहीत।
  • लिंक
    • रूसी में आधिकारिक प्रारूप मुख पृष्ठ
    • json.js, json2.js जावास्क्रिप्ट में JSON डेटा के साथ काम करने के लिए डगलस क्रॉकफोर्ड द्वारा विकसित एक लाइब्रेरी है। विस्तार वस्तु वस्तु toJSONString विधि, जो तब किसी भी ऑब्जेक्ट में मौजूद होती है और उसे JSON प्रारूप स्ट्रिंग में परिवर्तित करती है।
    • json-rpc.org (अंग्रेजी)
    फाइल एक्सटेंशन .json
    फ़ाइल श्रेणी
    उदाहरण फ़ाइल (0.57 किबी)
    संबंधित कार्यक्रम माइक्रोसॉफ्ट नोटपैड
    माइक्रोसॉफ्ट वर्डपैड
    नोटपैड++
    मोज़िला फ़ायरफ़ॉक्स
    दस्तावेज़ मार्कअप भाषाएँकार्यालय दस्तावेज़

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

    JSON प्रारूप में स्क्रिप्ट की मुख्य विशेषता XML प्रारूप के साथ इसकी विनिमेयता है। दोनों प्रकार हैं पाठ दस्तावेज़, जिसे वर्ड प्रोसेसर से खोला जा सकता है। हालाँकि, हम विशेष सॉफ़्टवेयर से शुरुआत करेंगे।

    विधि 1: अल्टोवा XMLSpy

    एक काफी प्रसिद्ध विकास वातावरण, जिसका उपयोग वेब प्रोग्रामर द्वारा भी किया जाता है। यह वातावरण JSON फ़ाइलें भी उत्पन्न करता है और इसलिए इस एक्सटेंशन के साथ तृतीय-पक्ष दस्तावेज़ खोलने में सक्षम है।


    इस सॉफ्टवेयर के दो नुकसान हैं. पहला भुगतान वितरण आधार है। परीक्षण संस्करण 30 दिनों के लिए सक्रिय है, लेकिन इसे प्राप्त करने के लिए आपको एक नाम और प्रदान करना होगा मेलबॉक्स. दूसरा सामान्य बोझिलता है: जिस व्यक्ति को बस एक फ़ाइल खोलने की ज़रूरत है, उसे यह बहुत परिष्कृत लग सकता है।

    विधि 2: नोटपैड++

    मल्टीफ़ंक्शनल टेक्स्ट एडिटर नोटपैड++ JSON प्रारूप खोलने के लिए उपयुक्त स्क्रिप्ट की सूची में पहला है।


    नोटपैड++ के बहुत सारे फायदे हैं - यह कई प्रोग्रामिंग भाषाओं के सिंटैक्स को प्रदर्शित करता है, प्लगइन्स का समर्थन करता है, और आकार में छोटा है... हालाँकि, कुछ विशेषताओं के कारण, प्रोग्राम धीरे-धीरे काम करता है, खासकर यदि आप इसमें एक बड़ा दस्तावेज़ खोलते हैं।

    विधि 3: अकेलपैड

    एक रूसी डेवलपर का अविश्वसनीय रूप से सरल और साथ ही संभावनाओं से भरपूर टेक्स्ट एडिटर। यह जिन प्रारूपों का समर्थन करता है उनमें JSON शामिल है।


    नोटपैड++ की तरह, यह नोटपैड विकल्प भी मुफ़्त है और प्लगइन्स का समर्थन करता है। यह तेजी से काम करता है, लेकिन बड़ी और जटिल फ़ाइलें पहली बार नहीं खुल सकती हैं, इसलिए इस सुविधा को ध्यान में रखें।

    विधि 4: कोमोडो संपादित करें

    निःशुल्क लेखन सॉफ्टवेयर प्रोग्राम कोडकोमोडो से. इसमें एक आधुनिक इंटरफ़ेस और प्रोग्रामर्स के लिए व्यापक समर्थन है।


    दुर्भाग्य से, कार्यक्रम में रूसी भाषा नहीं है। हालाँकि, औसत उपयोगकर्ता को अत्यधिक कार्यक्षमता और समझ से बाहर इंटरफ़ेस तत्वों से निराश होने की अधिक संभावना होगी - आखिरकार, यह संपादक मुख्य रूप से प्रोग्रामर के लिए लक्षित है।

    विधि 5: उत्कृष्ट पाठ

    कोड-उन्मुख का एक और प्रतिनिधि पाठ संपादक. इंटरफ़ेस अपने सहकर्मियों की तुलना में सरल है, लेकिन क्षमताएं समान हैं। एप्लिकेशन का एक पोर्टेबल संस्करण भी उपलब्ध है।


    दुर्भाग्य से, उदात्त पाठ रूसी में उपलब्ध नहीं है। शेयरवेयर वितरण मॉडल को एक नुकसान भी कहा जा सकता है: मुफ़्त संस्करण किसी भी तरह से सीमित नहीं है, लेकिन समय-समय पर लाइसेंस खरीदने की आवश्यकता के बारे में एक अनुस्मारक दिखाई देता है।

    विधि 6: एनएफओपैड

    JSON एक्सटेंशन वाले दस्तावेज़ देखने के लिए एक साधारण नोटपैड भी उपयुक्त है।



    मित्रों को बताओ