क्या किसी मौजूदा जावास्क्रिप्ट ऑब्जेक्ट में JSON स्ट्रिंग को पार्स करने का कोई तरीका है: मान लें कि मैंने यह ऑब्जेक्ट बनाया है:

var ClientState = function(){
    this.userId ="";
    this.telephoneState = "UNKNOWN";
    this.agentState = "UNKNOWN";
    this.muteState = "UNKNOWN";
    this.number = "";
    this.ready = false;
}

ClientState.prototype = {
    doNastyStuff: function(){
        //do something here
    }
    //other methods here
}

मेरे पास यह जेसन तार के माध्यम से आ रहा है:

{"userId":"xyz","telephoneState":"READY","agentState":"UNKNOWN","muteState":"MUTED","number":"","ready":false}

क्या ऊपर निर्दिष्ट वस्तु में deserialize करना संभव है? ताकि मैं उस पर निर्दिष्ट सभी विधियों का उपयोग कर सकूं? या आम तौर पर एक विशिष्ट लक्ष्य वस्तु में deserialize करना संभव है (इस लक्ष्य वस्तु में deserialization निर्दिष्ट किए बिना)? (मुझे पता है कि मैं एक कन्स्ट्रक्टर बना सकता हूं जो जेसन या पार्स किए गए ऑब्जेक्ट को स्वीकार करता है।)

1
dermoritz 28 मार्च 2018, 12:03

2 जवाब

सबसे बढ़िया उत्तर

यदि आप ऑब्जेक्ट मानों को इंस्टेंस गुणों में जोड़ने के लिए अपने फ़ंक्शन का उपयोग करना चाहते हैं:

function ClientState() {
  this.userId = "";
  this.telephoneState = "UNKNOWN";
  this.agentState = "UNKNOWN";
  this.muteState = "UNKNOWN";
  this.number = "";
  this.ready = false;
}

ClientState.prototype = {
  doNastyStuff: function(json) {
    const data = JSON.parse(json);
    Object.assign(this, data);
  }
}

const json = '{"userId":"xyz","telephoneState":"READY","agentState":"UNKNOWN","muteState":"MUTED","number":"","ready":false}';
const clientState = new ClientState();
clientState.doNastyStuff(json);
console.log(clientState);
0
Andy 28 मार्च 2018, 09:17