How to use JSON to re-build the Javascript Object? -


मेरे पास एक वस्तु है:

  var someObj = Class.create ({initialize : फ़ंक्शन (objName) {this.objName = objName;}});  

मैं

  o = new someObj ("objName") का उपयोग कर सकते हैं; एक obj बनाने के लिए  

मैं एक JSON स्ट्रिंग बनने के लिए ओ को बदलने के लिए ऑब्जेक्ट। टू जेसन (ओ) का उपयोग कर सकता हूं, लेकिन मैं चाहता हूं कि जेएसओएन स्ट्रिंग कुछ ओबजे में वापस बदल ले, तो, मैं एक ऑब्जेक्ट बनने के लिए JSON स्ट्रिंग पास करने के लिए eval () का उपयोग करता हूं, लेकिन सवाल है, यह एक JS Obj बन सकता है, लेकिन "ओ" के निर्माता कुछ ऑब्जेक्ट नहीं है जेएसओएन स्ट्रिंग ऑब्जेक्ट का प्रतिनिधित्व नहीं कर सकता है I "someObj" का उपयोग करके कन्स्ट्रक्टर के रूप में JSON स्ट्रिंग कैसे बना सकता है?

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

  var o = new someObj ("objName") का उपयोग कर; Var json = ऑब्जेक्ट। टूजसन (ओ); Var json_obj = eval (json); $। विस्तार (json_obj, someObj.prototype); Json_obj.someMethodDefinedOnsomeObj ()  

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

  फ़ंक्शन एनिमल (नाम) {this.name = name; } Animal.prototype.talk = function () {console.log ("मेरा नाम है" + this.name); } Var a = नया पशु ("ब्रेंडन इईच"); एक बात(); Var json = '{name: "टिम बर्नर्स-ली"}' var b = eval (b); $। विस्तार (बी, पशु। प्रोटोटाइप); b.talk ();  

एक फायरबग कंसोल में यह उत्पादन उत्पन्न करता है:

मेरा नाम ब्रेंडन ईच

मेरा नाम टिम बर्नर्स ली है < / P>


Comments

Popular posts from this blog

MySql variables and php -

url rewriting - How to implement the returnurl like SO in PHP? -

Which Python client library should I use for CouchdB? -