我有一个javascript对象。
var homeObject=JSON.parse(JSON.stringify(BuildingObject));
var flatNumber=homeObject.flatNo;
那么,有没有办法在没有JSON转换的情况下直接获取 flatNo 属性。
另外,再补充说明:
如果直接访问, BuildingObject.flatNo
将返回undefined,而不进行JSON转换
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”
答案 0 :(得分:2)
问题很可能源于JSON.stringify()将首先尝试在对象上调用toJSON(),因此toJSON()很可能添加的属性不是原始对象的键。 e.g。
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
答案 1 :(得分:1)
如果BuildingObject
是包含名为flatNo
的属性的对象,则可以使用标准JavaScript语法读取该属性:
BuildingObject.flatNo
BuildingObject["flatNo"]
测试代码:
var BuildingObject = {
flatNo: 314
};
console.log(BuildingObject.flatNo, BuildingObject["flatNo"]);
...按预期打印:
314 314
在处理JavaScript对象时绝对不需要使用JSON。尽管人们普遍相信,JSON只不过是一种受JavaScript语法启发的纯文本数据格式。 JSON不是JavaScript而且没有“JSON对象”这个术语(你可以在StackOverflow上引用JavaScript对象的无穷无尽的问题中读到这个术语),因为如果它是JSON则是一个字符串。
如果BuildingObject.flatNo
为您返回undefined,那么BuildingObject
不包含您的想法,或者您的测试在某个地方存在漏洞。