将嵌套的json数组转换为javascript数组

时间:2014-01-22 22:25:12

标签: javascript arrays json

我有一个json数组(为了简洁起见,这里被截断):

[
  {
    "name": null,
    "code": null,
    "results": [
      {
        "date": "2012-04-28T06:00:00.000Z",
        "name": null,
        "value": 135,
        "unit": "MG/DL",
        "code": null
      },
      {
        "date": "2012-04-28T06:00:00.000Z",
        "name": null,
        "value": 59,
        "unit": "MG/DL",
        "code": null
      }
    ]
  },
etc, etc,
]

我想将其转换为javascript数组,以便我可以提取日期和值来绘制它。我见过有关eval和JSON.parse的内容,但无法弄清楚如何正确访问这些值。

json文本被称为实验室,所以我这样做:

var obj = JSON.parse(labs);
alert("obj.length="+obj.length);    //correctly shows 22 objects
for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        alert("prop: " +prop + " value: " +obj[prop]);
    }
}

输出是 prop:0值:[object Object] prop:1值:[object Object] 等

如何获取日期字段和值字段?

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容检索第一个"date"

obj[0].results[0].date

基于此,您可以为每个0嵌套循环。第一个基于obj

for (var i = 0; i < obj.length; i++) {
    // ...
}

另一个基于"results"中的每个嵌套obj

    var results = obj[i].results;

    for (var j = 0; j < results.length; j++) {
        // ...
    }

您可以在其中提醒您所追踪的字段:

        alert("Date: " + results[j].date + "\nValue: " + results[j].value);

答案 1 :(得分:0)

将循环包裹在常规的旧循环中。现在你有一个对象数组。

for (var i=0; i<obj.length; i++) {
    for (var prop in obj[i]) {
        if (obj[i].hasOwnProperty(prop)) {
            alert("prop: " +prop + " value: " +obj[i][prop]);
        }
    }
}