2014-06-19 26 views
0

解析請看下面的JSON字符串後:的Javascript獲取對象的名字從JSON

[{ 「ElementID1」:{ 「緯度」: 「10.02483」, 「東經」: 「70.753464」}} ,{「ElementID2」:{「latitude」:「10.029301」,「longitude」:「70.751892」}},{「ElementID3」:{「latitude」:「10.029568」,「longitude」:「70.751856」}}]

這是包含在 「數據」 變量:

var response = JSON.parse(data); 

我該如何去救援人員到場呃這個結果? 顯然對我說,我可以訪問此首先作爲一個數組:

for(var element in response) 
{ 

} 

但我不知道什麼是「ElementID1」會。它可以是任何字符串,所以我不能只是做類似

element.elementID.latitude 

檢索對象的緯度。而且我也希望能夠獲得該圖片ID本身。

我認爲這是一個簡單的問題,但我曾嘗試在一段時間內使用Google搜索而沒有任何進展。

+0

你不應該使用'for..in'遍歷數組,使用香草'for'。我不確定我完全理解你在問什麼,但是答案可能是,for..in'。在任何對象中使用此循環,並且它將遍歷其中的鍵,就像循環遍歷數組的鍵一樣。換句話說:這是你想要的嗎?:for(var i = 0,n = response.length; i acdcjunior

+0

我必須同意@acdcjunior:'for ... in'in循環中的JS實際上並沒有給你這個元素,只是索引。 [演示](http://jsfiddle.net/AstroCB/Np6qR/) – AstroCB

回答

3
var data = [{"ElementID1":{"latitude":"10.02483","longitude":"70.753464"}}, 
      {"ElementID2":{"latitude":"10.029301","longitude":"70.751892"}}, 
      {"ElementID3":{"latitude":"10.029568","longitude":"70.751856"}}]; 

for(var i = 0; i < data.length; i++) { 
    var obj = data[i];  
    for (var key in obj) { 
     if (obj.hasOwnProperty(key)) { 
      console.log(obj[key].latitude); 
     } 
    } 
} 

DEMO

基本上,需要訪問各數據數組元素,這是在這種情況下的對象,並且因爲不知道的ElementID*名稱爲每個元素,可以通過此對象的屬性循環尋找所需的一個,latitude在這種情況下。通過結果陣列

response.forEach(function(response){ 
    for (var element in response){ 
    var picutureId = element; 
    var latitude = value[element].latitude; 
    var longitude = value[element].longitude; 
    // at this point you can manipulate the pictureId, latitude, and longitude of each object 
    } 
}) 

環路,通過每個對象的鍵/值對循環,並從那裏操作數據:

+0

一些解釋和你的代碼一起,顯然不是必須的,通常會幫助OP理解你的答案。 – AstroCB

+1

已添加。感謝那! :) –

+0

謝謝,這個作品完美。我實際上已經嘗試過,但首先使用了「for..in」。我想知道爲什麼循環的行爲是不同的。 – Pochi

0

如果連緯度和經度屬性的名稱未知

for (var index in data) { //Iterate through array 
    var obj = data[index]; 
    for (var prop in obj) { //Iterate through ElementId object 
     console.log(prop); //Print ElementID 
     var latlongObj = obj[prop]; 
     for (var key in latlongObj) { //Iterate through latlong object 
      console.log(key); //Print lattitude/longitude 
      console.log(latlongObj[key]); //Print value 
     } 
    } 
}