Как использовать JSON для создания объекта, который Наследовался Типу объекта?

При использовании / и % используйте

scanf("%d %d", &a, &b);

вместо

scanf("%f %f", &a, &b);

, поскольку% f используется для переменных типа float тогда как в случае / и% используется% d

12
задан Chris Pietschmann 9 October 2008 в 04:24
поделиться

3 ответа

Я не воображаю так. Я создал бы функцию на классе Человека для инициализации от объекта JSON на вашем месте.

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

Если Вы не знали, какой класс объект JSON представлял заранее, возможно, добавьте дополнительную переменную в свой JSON.

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

И затем сделайте, чтобы 'разработчик' функционировал, который интерпретирует его.

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

Обновление: так как Вы говорите, что класс является частью сторонней библиотеки, которую Вы не можете изменить, Вы могли или расширить класс с помощью разработки прототипа или записать функцию, которая просто заполняет класс внешне.

например:

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

или

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];
    }
}
13
ответ дан 2 December 2019 в 19:00
поделиться

Вы могли позволить новому Человеку () принимать объект заполнить атрибуты с в качестве параметра.

var you = new Person({ firstName: 'Mike' });
4
ответ дан 2 December 2019 в 19:00
поделиться

Можно получить объект из их. Ваш конструктор может принять объект, который Вы хотите, но вызываете их конструктора незатронутым способом:

function yourWrapper(obj) {
    theirObject.call(this);
    for (var s in obj) {
        this[s] = obj[s];
    }
}
yourWrapper.prototype = new theirObject();

Или что-то как этот :)

2
ответ дан 2 December 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: