How to use JSON to create object that Inherits from Object Type?

前端 未结 3 1116
忘了有多久
忘了有多久 2021-02-02 00:33

I know how to use JSON to create objects, but there doesn\'t seem to be away to use JSON to create an object that is of a specific object type.

Here\'s an example of an

3条回答
  •  误落风尘
    2021-02-02 01:13

    I don't imagine so. I'd create a function on the Person class to initialise from a JSON object if I were you.

    function Person() {
        this.loadFromJSON = function(json) {
            this.FirstName = json.FirstName;
        };
    }
    

    If you didn't know what class the JSON object was representing beforehand, perhaps add an extra variable into your JSON.

    { _className : "Person", FirstName : "Mike" }
    

    And then have a 'builder' function which interprets it.

    function buildFromJSON(json) {
        var myObj = new json["_className"]();
        myObj.loadFromJSON(json);
        return myObj;
    }
    

    Update: since you say the class is part of a third-party library which you can't change, you could either extend the class with prototyping, or write a function which just populates the class externally.

    eg:

    Person.prototype.loadFromJSON = function(json) {
        // as above...
    };
    

    or

    function populateObject(obj, json) {
        for (var i in json) {
            // you might want to put in a check here to test
            // that obj actually has an attribute named i
            obj[i] = json[i];
        }
    }
    

提交回复
热议问题