我有一个javascript对象。
var homeObject=JSON.parse(JSON.stringify(BuildingObject));
var flatNumber=homeObject.flatNo;
因此,有没有办法直接获取flatNo属性而无需进行JSON转换。
此外,还要添加其他说明:
如果直接访问,且不进行JSON转换,则
BuildingObject.flatNo
返回undefined下面列出了BuildingObject的JSON输出
{
"flatNo": "34",
"objectId": "4oRaVl96ZQ",
"createdAt": "2013-03-01T17:35:27.724Z",
"updatedAt": "2013-03-01T17:40:45.804Z"
}
还是很惊讶!它打印出
BuildingObject.createdAt
和BuildingObject.updatedAt
。问题在于字符串对象“ flatNo”和“ objectId”
最佳答案
问题可能源于JSON.stringify()会首先尝试在对象上调用toJSON()的事实,因此toJSON()很可能添加的属性不是原始对象的键。例如
var test = {
toJSON: function () {
return {
foo: "bar"
};
}
};
console.log(JSON.stringify(test));
// outputs: {"foo":"bar"}
console.log(test.foo);
// outputs: undefined
console.log(test.toJSON().foo);
// outputs: bar
因此,您可以:
a)检查您的BuildingObject是否具有用于flatNo的某种访问器函数,例如BuildingObject.get('flatNo')
要么
b)使用BuildingObject.toJSON()。flatNo