0

我有一个看起来像这样的 JSON 响应

[
    {
        "alias": "Server1", 
        "hostgroup_worst_service_state": "0", 
        "status_history": {
            "status": [
                "0", 
                "2", 
                "0", 
                "0"
            ]
        }
    }, 
    {
        "alias": "Server2", 
        "hostgroup_worst_service_state": "0", 
        "status_history": {
            "status": [
                "0", 
                "0", 
                "0", 
                "0"
            ]
        }
    }, 
    {
        "alias": "Server3", 
        "hostgroup_worst_service_state": "0", 
        "status_history": {
            "status": [
                "1", 
                "1", 
                "1", 
                "0"
            ]
        }
    }
]

我可以使用 .each 迭代器函数轻松访问别名和 hostgroup_worst_state:

 $.each(data, function(i, item) {
   console.log(item.alias)
   console.log(item.hostgroup_worst_service_state)
}

但是我很难访问状态数据。我需要以这种方式显示它们:

["0","2","0","0"]
["0","0","0","0"]
["1","1","1","1"]

这些值接下来将用于使用 jQuery Sparklines 显示图形。

谢谢你的帮助,

4

3 回答 3

3

您有一个对象数组,其中每个对象都有一个名为 的属性status_history,该属性指向另一个具有名为 的属性的对象,该属性status包含您所需的数组。因此,要访问此数组,请使用以下命令:

$.each(data, function () { 
  console.log(this.status_history.status); 
});

请注意,this里面.each()是指您迭代的每个对象/值。这相当于使用以下内容:

$.each(data, function (i, item) { 
  console.log(item.status_history.status); 
});

此外,如果您想要一个具有给定状态数据的数组,您可以使用$.map()

var arr = $.map(data, function (el) { 
  return [ el.status_history.status ];
});
于 2012-09-11T14:12:07.830 回答
1

结果将包含所需的数组。

var result = [];

for(var i = 0; i < data.length; i++) {
    result.push(data[i].status_history.status);
}
于 2012-09-11T14:15:21.070 回答
0

将您的数据带到一个元素,然后说数据

for(i=0;i<data.length;i++)
{
 console.log(data.status_history.status);
}
于 2012-09-11T14:16:12.613 回答