2014-01-22 80 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