2014-01-22 59 views
1

我有一个JSON数组本身(这里截断简洁):转换嵌套的JSON数组的JavaScript阵列

[ 
    { 
    "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]); 
    } 
} 

输出是 丙:0的值:[对象的对象] 丙:1的值:[对象的对象] 等

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

+0

为了澄清,你正在寻找迭代数组中的'results',这样你就可以得到各个日期/值字段(比如'results [0] ['date']',results [1] ['date']] '等等。)? – SenorAmor

回答

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); 
+0

工作完美!现在一切都有意义。非常感谢您花时间帮助。 – user3217883

0

将你的循环包装在一个普通的旧for循环中。现在你有一个对象数组。

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]); 
     } 
    } 
} 
+0

外层循环正确地通过了22个对象。内部循环正确地获取名称和代码值。但是当它到达结果对象时,它会输出一堆[对象对象],[对象对象]等 – user3217883

+0

我不会为你做所有的工作。我认为这很明显,因为我提供了访问任何特定内部元素所需的方法,所以如何获得任何内部对象或数组或值。 – tenub