我有一个看起来像这样的json:
"metrics" : {
"ga:pageviews" : true,
"bounceRate" : false
}
这是一个更大的json的子对象。我像这样访问该对象:
var metrics = report.specifications[0]
我试图像这样迭代这两个属性:
for(var key in metrics) {
if (metrics.hasOwnProperty(key)) {
console.log(key + " -> " + metrics[key]);
}
}
虽然我没有获得这两个属性,而是获得了一个包含该对象其他属性的非常大的列表。
我得到的无限列表的第一行是:
__parentArray -> { metrics: { 'ga:pageviews': true, bounceRate: false } }
这与我的问题有关吗?
整个JSON架构如下所示:
reportId: String,
specifications : [{
metrics: {
'ga:pageviews': Boolean,
bounceRate: Boolean
},
dimensions: {
}
}
]
}
有什么想法吗?
答案 0 :(得分:0)
通过在此处添加toObject()方法解决:
var metrics = report.specifications[0].metrics.toObject();
答案 1 :(得分:0)
在JavaScript中迭代属性的最佳方法是使用Object.keys
。执行此操作与使用for
循环之间的区别在于Object.keys
忽略原型链中的属性,您可能正在接受这些属性。
Object.keys(metrics).forEach(function (key) {
console.log(key + " -> " + metrics[key]);
});