2012-07-22 79 views
0

我想從javascript讀取json。我已經能夠讀取該文件,但是由於其結構,我從該文件中檢索信息時遇到一些問題。我不知道某些級別的名稱...閱讀未知參數json javascript

這是一個例子:

{ 
    "zona": [{ 
     "zona1": [{ 
      "lon": "-3.841867446899414", 
      "lat": "43.466002139041116" 
     }, { 
      "lon": "-3.838176727294922", 
      "lat": "43.466002139041116" 
     }, { 
      "lon": "-3.838348388671875", 
      "lat": "43.46432016607394" 
     }, { 
      "lon": "-3.843669891357422", 
      "lat": "43.46276274196949" 
     }] 
    }, { 
     "zona2": [{ 
      "lon": "-3.832254409790039", 
      "lat": "43.462513550389424" 
     }, { 
      "lon": "-3.8265037536621094", 
      "lat": "43.46375949801845" 
     }, { 
      "lon": "-3.8254737854003906", 
      "lat": "43.461641371770504" 
     }, { 
      "lon": "-3.829936981201172", 
      "lat": "43.46002157809642" 
     }, { 
      "lon": "-3.832683563232422", 
      "lat": "43.461142978339005" 
     }] 
    }] 
} 

我試圖做這樣的事情,但我認爲我是無辜的一點​​點笑

function fun() { 
    var zona; 
    $.getJSON('listaPuntosZona.json', function(data) { 
     for (i = 0; i < data.zona.length; i++) { 
      zonaX = 'zona' + (i + 1); 
      alert(data.zona[i].zonaX.length); 
     } 
    }); 

我已閱讀有關foreach循環,但我不明白他們,所以我不能爲他們寫一個代碼。有沒有辦法做,因爲我在想什麼? 第三個參數,ZonaX從zona1到zonaN,但是1,2,3 .... N,總是+1。

回答

2

要探索未知的JSON /對象結構,您可以調用函數walk(data)作爲 ... function(data){walk(data); ...

 function walk(data) { 
      if(typeof(data) == "object") { 
       for(key in data) { 
        console.log(key+": "+data[key]); 
        walk(data[key]); 
       } 
      } 
     } 
+0

謝謝。這就是我一直在尋找的。我必須做一些修改才能適應我的網頁,但我想我可以使用您的功能幾乎完成。 – user1298272 2012-07-22 14:12:33

1

嘗試

for (key in data.zone) 
{ 
} 
1

你似乎使用jQuery,所以我們通過遍歷數組jQuery的方式:

$.each(data, function(index) { 
    console.log(index); 
    $.each(this, function(index) { 
     console.log(index); 
     $.each(this, function(index) { 
      console.log(this); 
     }); 
    }); 
}); 

你的JavaScript控制檯看一看,你就會明白它是如何工作並閱讀jQuery文檔:http://api.jquery.com/jQuery.each/