我有一个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.createdAtBuildingObject.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

09-25 19:22