我有一个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] 等
如何获取日期字段和值字段?
答案 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]);
}
}
}