2013-04-22 74 views
-1

我遇到了問題,試圖在我的JSON文件中獲取嵌套數據。在JSON中嵌套的數據

任何人都可以幫助我嗎?我正在嘗試創建一個megamenu。

$.getJSON("js/nav.json", function (data) { 
    $.each(data.navigation, function (i, navigation) { 
     var jsondata = "<li class='top-level'><a href='/" + this.link + "'>" + this.title + "</a></li>"; 
     $.each(this.headingArray, function() { 
      alert(hello); 
     }); 
     $(jsondata).appendTo("ul.nav"); 
    }); 
    }); 
}); 

,這裏是樣本JSON文件IM從

{ 
    "navigation": [ 
      { 
        "title": "Home", 
        "link": "" 
}, 
      { 
        "title": "Find your ski holiday", 
        "link": "#URLhere", 
        "headingArray": [ 
          { 
            "heading": [ 
              { 
                "title": "Destinations", 
                "link": "#URLhere", 
                "subheading": [ 
                  { 
                    "title": "Andorra", 
                    "link": "#URLhere" 
}, 
                  { 
                    "title": "Austria", 
                    "link": "#URLhere" 
}, 

任何幫助閱讀將不勝感激嗎?

演示 - http://dev.thirstythursdays.co.uk/menu-json3

+0

你可以更具體一點*你的問題是什麼*? – Friederike 2013-04-22 14:48:26

回答

1

因爲你的對象有不同的屬性,如headingArraysubheading等,試圖通過this.headingArray你要檢查它是否定義或不重複了。

所以添加類似

if (this.headingArray){ 
    //iterate through this.headingArray 
} 

DEMO:http://jsfiddle.net/Q2Xy4/1/

+0

感謝您的幫助! – imshuffling 2013-04-22 15:00:19

+0

+1演示提琴。 – 2013-04-22 15:12:11

0

這是你的反應是如何被解析。

請注意,由於您的JSON結構的方式,數組中不是每個生成的元素都包含一個headingArray/subheading字段。

enter image description here

例如,如果你看一下JSON響應數組中的第一個元素,你可以清楚地看到該對象不包含headingArray場:

{ 
    "navigation": [ 
    { 
     "title": "Home", 
     "link": "" // No headingArray in here... 
    }, { 
     "title": "Find your ski holiday", 
     "link": "#URLhere", 
     "headingArray": [ 
     { 

你應該怎麼做是:

  • 無論是重組的JSON只包含同質元素,
  • 或重寫您的解析邏輯,以在 嘗試訪問其值時檢查不存在的字段。