2011-06-27 28 views

उत्तर

50

एक जावास्क्रिप्ट वस्तु Javascript में एक डेटा प्रकार है - यह केवल जावास्क्रिप्ट में समझ में आता है। अक्सर आप Javascript वस्तु शाब्दिक इस तरह देखें:

var obj = { 
    a: 1, 
    b: 2 
}; 

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

जावास्क्रिप्ट ऊपर वस्तु इस तरह जावास्क्रिप्ट में JSON प्रारूप में प्रतिनिधित्व किया जा सकता है:

var json = '{ "a": 1, "b": 2 }'; 

या सी # में इस तरह:

string json = "{ \"a\": 1, \"b\": 2 }"; 

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

var obj = eval('(' + json + ')'); 

हालांकि आम तौर पर आप देखना चाहते हैं:

var obj = JSON.parse(json); // for security reasons 

ध्यान दें कि JSON है कि यह नहीं कर सकते में सीमित है स्टोर फ़ंक्शंस - इसमें केवल एक ही मान हो सकते हैं:

  • ऑब्जेक्ट्स (शाब्दिक)
  • सरणियों
  • संख्या
  • बूलियन्स
  • तार
  • nulls
  • "JavaScript ऑब्जेक्ट नोटेशन के लिए"
+3

JSON और जावास्क्रिप्ट ऑब्जेक्ट के बीच मुख्य अंतर "JSON स्ट्रिंग एक डेटा इंटरचेंज प्रारूप है" और जावास्क्रिप्ट ऑब्जेक्ट जावास्क्रिप्ट में डेटा प्रकार है – neelmeg

14

JSON एक जावास्क्रिप्ट ऑब्जेक्ट का एक टेक्स्ट प्रस्तुति है। यह जावास्क्रिप्ट नोटेशन में प्रभावी रूप से एक ऑब्जेक्ट शाब्दिक है (इसलिए नाम - जावास्क्रिप्ट ऑब्जेक्ट नोटेशन => जेएसओएन)।

यदि आप दो ऑब्जेक्ट की तुलना करना चाहते हैं, तो टेक्स्ट को ऑब्जेक्ट में कनवर्ट करें, फिर कुंजी और मानों की तुलना करें।

करने के लिए/वस्तुओं के कुछ उदाहरण पाठ से:

// Create obj using an object literal 
var obj = {key: 'value'}; 

// Convert to text using JSON.stringify 
var text = JSON.stringify(obj); 

// Show the value of text 
alert(text); // {"key":"value"} 

// Create a new object from text 
var newObj = JSON.parse(text); // javascript object 

// Show the text version of newObj 
alert(JSON.stringify(newObj)); // {"key":"value"} 

// Use text as code 
var newObj2 = eval('(' + text + ')'); 

// It is indeed a string literal 
alert(JSON.stringify(newObj2)); // {"key":"value"} 

आप दो वस्तुओं की तुलना करने के लिए, उन्हें JSON से वस्तुओं में बदलने (अगर वे पहली जगह में JSON कर रहे हैं) तो जैसे कुछ करना चाहते हैं:

function compareObjects(a, b) { 
    var i, p, aProps = [], bProps = []; 

    // Simple test first 
    if (a === b) { 
    return true; 
    } 

    // Get properties of a 
    for (p in a) { 
    if (a.hasOwnProperty(p)) { 
     aProps.push(p); 
    } 
    } 

    // Get properties of b 
    for (p in b) { 
    if (b.hasOwnProperty(p)) { 
     bProps.push(p); 
    } 
    } 

    // If don't have same properties, return false 
    if (aProps.sort().join('') != bProps.sort().join('')) { 
    return false; 
    } 

    // If property values aren't the same, return false 
    i = aProps.length; 
    while (i--) { 
    if (a[aProps[i]] !== b[bProps[i]]) { 
     return false; 
    } 
    } 

    // If passed all tests, must be equal 
    return true; 
} 
+0

हाँ मैं पढ़ लिया है that..i दोनों anywhere..i की घोषणा उदाहरण नहीं मिलता है उनकी तुलना और देखो क्या अलग है करना चाहते हैं? – Refti

+2

इसे शामिल करने के लिए अपने प्रश्न को संपादित करें। – RobG

+1

ध्यान रखें: "var obj =" JSON का हिस्सा नहीं है! तकनीकी रूप से बोलते हुए, जेएसओएन केवल डेटा है, हालांकि इसे निष्पादित किया जाता है जैसे कि यह स्मृति में ऑब्जेक्ट को लोड करने के लिए कोड है। आपको केवल {} और सामान जेएसओएन डेटा के बीच की आवश्यकता है, जिसे आप 'मूल्यांकन' कर सकते हैं और अपने जावास्क्रिप्ट कोड या अन्य प्रोग्रामिंग भाषा में एक चर को असाइन कर सकते हैं। "Var" चीज़ जोड़ना JSON को जावास्क्रिप्ट में बदल देता है ... –

3

JSON खड़ा है।असल में, जेएसओएन जावास्क्रिप्ट है, लेकिन डेटा के साथ ऑब्जेक्ट भरने तक ही सीमित है। JSON ऑब्जेक्ट को निष्पादित करके, आप स्मृति में डेटा को "लोड" करते हैं।
जावास्क्रिप्ट बड़ी तस्वीर है, जिसमें ऑब्जेक्ट में हेरफेर करने या अन्य सभी प्रकार की सामग्री करने के लिए कोड की अतिरिक्त पंक्तियां हैं।

{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

ऐसा JavaScript उदाहरण इस होगा::

एक JSON उदाहरण इस होगा

var Glossary = { 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

सूचना वर शब्दावली = जावास्क्रिप्ट में?

0

अच्छी तरह से सभी जावास्क्रिप्ट ऑब्जेक्ट उन्मुख प्रोग्रामिंग में किसी अन्य ऑब्जेक्ट की तरह है।

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

var newObject = 
{  prop1 : true,  
showMessage : function (msg) {alert(msg)} 
}; 

जावास्क्रिप्ट में JSON के अनुसार,

JSON जावास्क्रिप्ट की वस्तु शाब्दिक अंकन का एक सबसेट है।

इसके अलावा आप एक बार देख लेने पर विचार करना चाह सकते हैं इस link

0
var object = { 
    name: "John", 
    profession: "blogger" 
}; 

alert(object.name);//John 
alert(typeof(object));//Object 
alert(object);//[object Object] 


var json = JSON.stringify(object); 

alert(json.name);//undefined 
alert(typeof(json));//string 
alert(json);//{"name":"John","profession":"blogger"} 
संबंधित मुद्दे