javascript如何从具有许多嵌套值的json blob中提取指定的键值



我有一个https查询,它返回以下格式的json blob:

{
"metric_data": {
"from": "2021-12-09T01:25:32+00:00",
"to": "2021-12-09T01:55:32+00:00",
"metrics_not_found": [],
"metrics_found": [
"Mobile/Crash/All"
],
"metrics": [
{
"name": "Mobile/Crash/All",
"timeslices": [
{
"from": "2021-12-09T01:24:00+00:00",
"to": "2021-12-09T01:54:00+00:00",
"values": {
"call_count": 5
}
}
]
}
]
}

}

我想查找并提取call_count的值。使用Javascript最好的方法是什么?下面的代码实际上会打印出所有json值,包括call_count,但我为获取call_count的值所做的所有努力都失败了。

var json = `{
"metric_data": {
"from": "2021-12-09T01:25:32+00:00",
"to": "2021-12-09T01:55:32+00:00",
"metrics_not_found": [],
"metrics_found": [
"Mobile/Crash/All"
],
"metrics": [
{
"name": "Mobile/Crash/All",
"timeslices": [
{
"from": "2021-12-09T01:24:00+00:00",
"to": "2021-12-09T01:54:00+00:00",
"values": {
"call_count": 5
}
}
]
}
]
}
}`;

// Convert a JSON object to a Javascript object
var obj = JSON.parse(json);
// This function prints nested values
function printValues(obj) {
for(var k in obj) {
if(obj[k] instanceof Object) {
printValues(obj[k]);
} else {
document.write(obj[k] + "<br>");
};
}
};
// Printing all the values from the resulting object
printValues(obj);
document.write("<hr>");

// This is where I fail as I try to print a single value.
document.write(obj["metrics"]["call_count"] + "<br>");

如有任何反馈,我们将不胜感激!

是的,首先是您忽略的metric_data属性。那么度量就是一组对象。您的代码段中有一个对象,但它仍然是一个对象数组。该数组中的对象具有时间片,时间片是一个对象数组。

var json = `{
"metric_data": {
"from": "2021-12-09T01:25:32+00:00",
"to": "2021-12-09T01:55:32+00:00",
"metrics_not_found": [],
"metrics_found": [
"Mobile/Crash/All"
],
"metrics": [
{
"name": "Mobile/Crash/All",
"timeslices": [
{
"from": "2021-12-09T01:24:00+00:00",
"to": "2021-12-09T01:54:00+00:00",
"values": {
"call_count": 5
}
}
]
}
]
}
}`;

// Convert a JSON object to a Javascript object
var obj = JSON.parse(json);
console.log(obj.metric_data.metrics[0].timeslices[0].values.call_count);

最新更新