2009-11-08 11 views
5

क्या आप इसे सबसे सरल शब्दों में समझा सकते हैं?जेसन क्या है, क्या आप इसे नौसिखिया के बारे में समझा सकते हैं?

डेमो स्क्रिप्ट के साथ सर्वश्रेष्ठ।

+11

क्या http://json.org/ पर Descripton साथ गलत क्या है? – tangens

+0

वहां प्रस्तुत किए गए लोगों के साथ प्रयास करें ... इसमें 4 यूआरएल सभी विवरण और शुरुआती लोगों के साथ हैं ... स्वयं पहले अभ्यास करें और उन –

+1

को पढ़ना जावास्क्रिप्ट ऑब्जेक्ट नोटेशन – dlamblin

उत्तर

18

JSON डेटा साझा करने का एक तरीका है (आमतौर पर ब्राउज़र और सर्वर के बीच)।

//arrays: 
[value, value, value] 
//objects: 
{key:value, key:value, key:value} 

कुछ बिंदु पर, एक गुरु के रूप में जाना जाता है डौग महसूस किया कि यह आम तौर पर एक वस्तु की तरह पहले से ही सेटअप जावास्क्रिप्ट को डेटा भेजने के लिए सबसे कारगर है:

जावास्क्रिप्ट मूल्यों की दुकान संग्रह करने के लिए दो तरह के लिए अनुमति देता है। [PHP को कॉमा-डिलीमिटेड स्ट्रिंग्स, पोस्ट-डेटा, एक्सएमएल, या यहां तक ​​कि एचटीएमएल भेजने की बजाय, जिनमें से सभी को जावास्क्रिप्ट द्वारा दर्दनाक रूप से पार्स किया जाना है]।

तो उसने उस विचार को जेएसओएन कहा, इसके लिए एक नमूना लिखा, और मानक पैदा हुआ।

उदाहरण के लिए, मान लें कि आपके login.php स्क्रिप्ट के बाद से उन का नाम, कुल पोस्ट, और दिन वापसी चाहिए पंजीकृत:

//XML 
"<xml..><details>\ 
    <user>Jim</user><posts>239</posts><since>Jan09</since>\ 
</details>" 
//POSTData 
"user=Jim&posts=239&since=Jan09" 
//JSON 
"{user:'Jim', posts:239, since:'Jan09'}" 

पिछले एक आसानी से जे एस द्वारा पार्स किया जा सकता (eval का प्रयोग करके), और विवरण intuitively इस्तेमाल किया जा सकता:

var user = details.user; 

संपादित करें:

यह सही ढंग से उल्लेख किया था कि मान्य JSON होने के लिए, सभी स्ट्रिंग्स डबल उद्धृत किया जाना चाहिए। यह जेएस को आरक्षित खोजशब्दों पर क्रोक करने से रोकने के लिए किया गया था (जेएस में कुछ शब्द का उपयोग नहीं कर सकते हैं, जैसे कि class, जब तक उन्हें उद्धृत न किया जाए। तो {class:'mike'} का उपयोग नहीं किया जा सकता है)।

यह भी है कि PHP 5.2 + कार्य करता है जो बनाने या JSON पार्स करने के लिए इस्तेमाल किया जा सकता है ने कहा जाना चाहिए:

<?php 
    $arr = array ('a'=>'ay','b'=>'bee','c'=>'cee'); 
    echo json_encode($arr); //outputs {"a":"ay","b":"bee","c":"cee"} 
?> 

json_decode समारोह केवल यदि मान्य JSON है काम करेंगे, तो यह कभी कभी महत्वपूर्ण है उन डबल-कोट्स को सही करने के लिए।

+1

आपका उदाहरण मान्य JSON नहीं है, स्ट्रिंगकी के पास उद्धरण होना चाहिए। – truppo

+0

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

+0

इसके अलावा, मुझे स्ट्रिंगकी और चाबियों को वैध होने के लिए डबलक्वेट करना होगा, जिसके लिए मुझे केवल पूरी स्ट्रिंग को सिंगलक्वॉट करना होगा, जो अजीब लगेगा। – SamGoody

1

JSON जावास्क्रिप्ट स्रोत कोड है जो डेटा संरचना बनाता है।

12

यह मूल रूप से टेक्स्ट में ऑब्जेक्ट्स का वर्णन करने का एक तरीका है - एक टेक्स्ट-आधारित क्रमबद्धता प्रारूप। हालांकि, इसकी सुंदरता यह है कि यह भी सामान्य जावास्क्रिप्ट है। जावास्क्रिप्ट का सिंटैक्स वस्तुओं को एक सुंदर संक्षिप्त प्रारूप में शुरू करने की अनुमति देता है, और यह प्रारूप अन्य भाषाओं में भी उत्पन्न/विश्लेषण करने के लिए काफी आसान है।

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


इसका मतलब यह है कि आप अपने डेटा स्रोत पूरी तरह से भरोसा जाहिर है, - मनमाने ढंग से पाठ को क्रियान्वित करने कोड के रूप में एक सुरक्षा के दृष्टिकोण से बहुत खतरनाक है।

+0

+1 उल्लेख करने के लिए कि यह मुख्य रूप से डेटा प्रारूप है। – Gumbo

3

JSON जावास्क्रिप्ट स्रोत कोड है जो डेटा संरचना की घोषणा करता है, आमतौर पर ब्राउज़र पर किसी वेब सर्वर द्वारा भेजा जाता है। ब्राउजर सामान्य जावास्क्रिप्ट पार्सर के माध्यम से कोड चलाता है और एक डेटा संरचना पॉप आउट हो जाती है।

एक जावास्क्रिप्ट घोषणा देखो की तरह कर सकते हैं:

var myvar = {"column1": "valuie1"}; 
      ^^^^^^^^^^^^^^^^^^^^^^ 

भाग के साथ ^^^ क्या JSON के रूप में जाना गया है को रेखांकित किया।

तो जल्दी पर, कुछ जावास्क्रिप्ट एक सर्वर से एक पाठ हड़पने और पार्स होगा इसे पसंद:

var myvar = eval('(' + textfromserver + ')'); 

के बाद से eval खतरनाक है, यह आजकल अधिक बार की तरह किया जाता है:

var myObject = JSON.parse(myJSONtext); 

यह एक है इतने सारे लोगों को हैक उपयोगी लगता है कि वे इसे मानक बनाते हैं। अधिक विस्तृत स्पष्टीकरण के लिए this wikepedia page देखें।

0

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

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

JSON जैसे कुछ का उपयोग करने के बदसूरत विकल्प हो सकता है कि आपका प्रोग्राम किसी वेब पेज की HTML सामग्री प्राप्त कर ले और किसी भी तरह से आपको आवश्यक जानकारी मिल सके। (और यदि वेबसाइट का HTML लेआउट बदलता है, तो आपको अपना प्रोग्राम बदलना होगा।)

+0

आप जेसन – Chris

+0

@Chris के साथ फ़ंक्शन भी परिभाषित कर सकते हैं: नहीं, नहीं, आप नहीं कर सकते। – Ryan

+0

@minitech: निश्चित रूप से, यह है: var o = {f: function() {चेतावनी ('हाँ हम कर सकते हैं!')}}; का(); – Chris

0

आप चीजों को व्यावहारिक रूप से इस वीडियो को जो JSON Click here to see the JSON video

JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) को दर्शाता है एक सरल डेटा विनिमय प्रारूप है जो सर्वलेट, JSP तरह जावास्क्रिप्ट और सर्वर साइड प्रौद्योगिकियों के बीच संवाद करने के लिए मदद करता है देखते हैं देखने के लिए चाहते हैं, डब्ल्यूसीएफ, एएसपी.Net आदि

जेएसओएन का प्रारूप नीचे दिखाया गया है। नीचे दिया गया प्रारूप "ग्राहककोड" और "ग्राहक नाम" संपत्ति के साथ "ग्राहक" ऑब्जेक्ट का प्रतिनिधित्व करता है।

![{"CustomerCode":"1001","CustomerName":"Shiv"}][2] 

enter image description here

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

enter image description here

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

तो यदि सर्वर साइड टेक्नोलॉजी जेएसओएन प्रारूप को छोड़ देती है जिसे आसानी से बदला जा सकता है एक जावास्क्रिप्ट ऑब्जेक्ट में जो वास्तव में एकाधिक सर्वर साइड टेक्नोलॉजीज और जावास्क्रिप्ट भाषा के बीच संचार को कम करेगा।

0

JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) एक हल्के प्रारूप है कि डेटा अंतर्विनिमय के लिए प्रयोग किया जाता है। यह जावास्क्रिप्ट ऑब्जेक्ट नोटेशन का एक सबसेट भी है (जिस तरह से objects जावास्क्रिप्ट में बनाया गया है)।

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

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements 
var MyObject = { 
    'StringProperty' : 'Value', 
    'IntProperty' : 12, 
    'ArrayProperty' : [ 1, 2, 3], 
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' } 
}; // MyObject is now an object with property values set. 

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

आप इसे एक स्टैंडअलोन सीरियलाइजेशन तंत्र के रूप में भी उपयोग कर सकते हैं, जो कि सरल है और एक्सएमएल की तुलना में कम जगह लेता है। कई पुस्तकालय मौजूद हैं जो आपको विभिन्न प्रोग्रामिंग भाषाओं के लिए JSON में ऑब्जेक्ट्स को क्रमबद्ध और deserialize करने की अनुमति देते हैं।

यहां एक बहुत तेज़ और संक्षिप्त लेखन है। http://secretgeek.net/json_3mins.asp

(thnx mson को, Vilx)

संबंधित मुद्दे