2013-04-22 5 views
-1

내 JSON 파일에서 중첩 된 데이터를 가져 오는 데 문제가 있습니다.JSON의 중첩 된 데이터

아무도 도와 줄 수 있습니까? 나는 메가 메뉴를 만들려고 노력하고있다. 여기

$.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 파일 메신저

{ 
    "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

답변

1

headingArray, subheading, 당신은 당신이 정의되어 있지 않거나 있지 않은 경우 확인해야 this.headingArray을 반복하기 전에있다.

그래서

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

DEMO 같은 것을 추가 http://jsfiddle.net/Q2Xy4/1/

+0

도움 주셔서 감사합니다! – imshuffling

+0

데모 피들을 +1합니다. –

0

이 당신의 응답이 해석되는 방법이다.

JSON의 구조로 인해 배열의 모든 결과 요소에 headingArray/subheading 필드가 포함되어있는 것은 아닙니다.

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

것은 당신이 무엇을해야 : 당신은 JSON 응답 배열의 첫 번째 요소를 보면

enter image description here

는 예를 들어, 객체가 headingArray 필드를 포함하지 않는다는 것을 분명히 볼 수 있습니다 입니다 :

  • 단지로 JSON 균일 요소를 포함하거나 구조 조정,
  • 또는 값을 액세스하기 전에 구문 분석 논리를 다시 작성하여 존재하지 않는 필드가 있는지 확인하십시오.