При использовании / и % используйте
scanf("%d %d", &a, &b);
вместо
scanf("%f %f", &a, &b);
, поскольку% f используется для переменных типа float тогда как в случае / и% используется% d
Я не воображаю так. Я создал бы функцию на классе Человека для инициализации от объекта 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];
}
}
Вы могли позволить новому Человеку () принимать объект заполнить атрибуты с в качестве параметра.
var you = new Person({ firstName: 'Mike' });
Можно получить объект из их. Ваш конструктор может принять объект, который Вы хотите, но вызываете их конструктора незатронутым способом:
function yourWrapper(obj) {
theirObject.call(this);
for (var s in obj) {
this[s] = obj[s];
}
}
yourWrapper.prototype = new theirObject();
Или что-то как этот :)