अगर मैं उपरोक्त वस्तु को JSON का उपयोग करके परिवर्तित करता हूं var jSonString = JSON.stringify(testObject);
, तो 2 (JS obj और JSON) में क्या अंतर है?
JSON एक डाटा इंटरचेंज फॉर्मेट है। यह एक मानक है जो बताता है कि कैसे सूचियों और अनियंत्रित नक्शे, स्ट्रिंग बूलियन और संख्याओं को एक स्ट्रिंग में दर्शाया जा सकता है। XML और YAML की तरह भाषाओं के बीच संरचित जानकारी को पारित करने का एक तरीका है, JSON समान है। दूसरी ओर एक जावास्क्रिप्ट ऑब्जेक्ट एक भौतिक प्रकार है। एक PHP सरणी की तरह, एक C ++ क्लास / स्ट्रक्चर, एक जावास्क्रिप्ट ऑब्जेक्ट जावास्क्रिप्ट के लिए आंतरिक एक प्रकार है।
यहाँ एक कहानी है। आइए कल्पना करें कि आपने स्टोर से कुछ फर्नीचर खरीदे हैं, और आप इसे वितरित करना चाहते हैं। हालाँकि, स्टॉक में केवल एक ही डिस्प्ले मॉडल है, लेकिन आप इसे खरीदने के लिए सहमत हैं।
दुकान में, आपके द्वारा खरीदी गई छाती की दराज एक जीवित वस्तु है:
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
हालाँकि, आप पोस्ट में एक चेस्ट-ऑफ-ड्रॉर्स नहीं भेज सकते हैं, इसलिए आप इसे विघटित करते हैं (पढ़ें, इसे कठोर करें)। यह अब फर्नीचर के मामले में बेकार है। यह अब JSON है। फ्लैट पैक रूप में इसका।
{"color":"red","numberOfDrawers":4}
जब आप इसे प्राप्त करते हैं, तो आप फिर से छाती की दराज का पुनर्निर्माण करते हैं (पढ़ें, इसे पार्स करें)। यह अब एक वस्तु के रूप में वापस आ गया है।
JSON / XML और YAML के पीछे का कारण यह है कि डेटा को प्रोग्रामिंग भाषाओं के बीच एक प्रारूप में स्थानांतरित किया जा सकता है जो दोनों भाग लेने वाली भाषाओं को समझ सकते हैं; आप सीधे PHP या C ++ को अपनी जावास्क्रिप्ट ऑब्जेक्ट नहीं दे सकते; क्योंकि प्रत्येक भाषा किसी वस्तु को अलग-अलग प्रकार से दर्शाती है। हालाँकि, क्योंकि हमने JSON संकेतन में ऑब्जेक्ट को कड़ा कर दिया है; यानी डेटा को दर्शाने के लिए एक मानकीकृत तरीका, हम ऑब्जेक्ट के JSON प्रतिनिधित्व को दूसरे लैंगगॉउ (C ++, PHP) तक पहुंचा सकते हैं, वे जावास्क्रिप्ट ऑब्जेक्ट को फिर से बना सकते हैं, जो कि ऑब्जेक्ट के JSON प्रतिनिधित्व के आधार पर उनकी अपनी वस्तु में था ।
यह ध्यान रखना महत्वपूर्ण है कि JSON फ़ंक्शन या दिनांक का प्रतिनिधित्व नहीं कर सकता है। यदि आप किसी फ़ंक्शन सदस्य के साथ ऑब्जेक्ट को स्ट्रिंग करने का प्रयास करते हैं, तो फ़ंक्शन को JSON प्रतिनिधित्व से छोड़ दिया जाएगा। एक तारीख एक स्ट्रिंग में बदल जाएगी;
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"