2013-10-28 3 views
3

나는이 문제를 해결하려고합니다. jQuery.getJSON() 메서드를 사용하여 서버에서 응답을 얻고 있습니다. 다음은 예시 응답입니다.jQuery를 사용하여 javascript에서 JSON 구문 분석

{ 
    "playlist": { 
     "track": { 
      "song": "Wake me up", 
      "albumart": "http://example.com/image.png", 
      "videoid": "CDsKBof4iMA" 
     } 
    } 
} 

응답에는 하나 이상의 재생 목록이 있지만 하나의 재생 목록 만 있습니다. 다음을 사용하여 요청합니다 :

$.getJSON("api/playlist/get.php", {artist: "artist+name" }) 

어떻게이 데이터를 구문 분석합니까?

+0

당신은 당신의해서 getJSON의 캘리포니아에 성공 기능을 추가 할 필요가 ll. JSON 문자열은 다른 JS 개체처럼 속성에 액세스 할 수있는 개체를 구문 분석합니다. getJSON에 대한 jquery API에는 다음과 같은 예가 있습니다. http://api.jquery.com/jQuery.getJSON/ – scrappedcola

답변

1

이의이 JSON을 가정 해 봅시다 결과는 다음과 같습니다.

{ 

    "playlist": { 
     "track": { 
      "song": "Wake me up", 
      "albumart": "http://example.com/image.png", 
      "videoid": "CDsKBof4iMA" 
     }, 
     "track": { 
      "song": "Wake me up 2", 
      "albumart": "http://example.com/image2.png", 
      "videoid": "CDsKBof4iMA2" 
     }, 
     "track": { 
      "song": "Wake me up 3", 
      "albumart": "http://example.com/image3.png", 
      "videoid": "CDsKBof4iMA3" 
     } 
    } 
} 

UPDATE : 그것은 동일한 속성 이름을 가진 여러 하위 오브젝트를 가지고 있기 때문에

이 JSON은 잘못된 형식입니다.

{ 
    playlist: { 
     tracks: [{ 
      "song": "Wake me up", 
      "albumart": "http://example.com/image.png", 
      "videoid": "CDsKBof4iMA" 
     }, { 
      "song": "Wake me up 2", 
      "albumart": "http://example.com/image2.png", 
      "videoid": "CDsKBof4iMA2" 
     }, { 
      "song": "Wake me up 3", 
      "albumart": "http://example.com/image3.png", 
      "videoid": "CDsKBof4iMA3" 
     }] 
    } 
} 

그런 다음 당신이 통과 배열에서 각 track 개체를 얻을 수 있습니다 : 당신이 할 수있는 경우 이 형식으로 서버에서 응답을 변경

당신은 다음과 같이 당신에게 $.getJSON 기능을 사용해야합니다

를 여기
$.getJSON("api/playlist/get.php", function (data) { 

    for (var key in myObj.playlist.tracks) { 
     //do something with your track object 
     console.log(myObj.playlist.tracks[key].song) 
    } 

}) 

당신을 위해 JsFiddle입니다 : http://jsfiddle.net/zur4ik/Fy6ud/1/

+0

console.log() 라인에 정의되지 않은 오류가 계속 발생합니다. –

+0

@JamesWalker 방금 내 게시물을 업데이트했습니다. JSON 응답이 유효하지 않은 형식이기 때문에'undefined '를 얻습니다. 동일한 속성 이름을 가진 여러 객체가 있습니다. JSON 발신자 파일을 서버에서 변경할 수 있다면 제안 된대로 올바른 형식으로 변경하십시오. 객체를 배열에 넣으십시오. – zur4ik

+0

고마워요! JSON 응답이 잘못되었을 수도 있습니다. –

0

이를 시도해보십시오 documentation 당으로

$.getJSON("api/playlist/get.php", function(data) { 
    var responseObject = JSON.parse(data); 
    // do stuff with responseObject 
}); 
0

이에서

jQuery.getJSON(url [, data ] [, success(data, textStatus, jqXHR) ]) 

을의 success(data, textStatus, jqXHR) 콜백 인 JSON 부하가 성공하면

관련 문제