2014-02-17 33 views
1

做一個JavaScript API調用的時候,我讓我的返回結果是這樣的:解析JSON結果在JavaScript時的反應不是在陣列

{ 
"data": { 
    "2 Broke Girls": { 
     "air_by_date": 0, 
     "cache": { 
      "banner": 1, 
      "poster": 1 
     }, 
     "language": "en", 
     "network": "CBS", 
     "next_ep_airdate": "2014-02-24", 
     "paused": 0, 
     "quality": "HD", 
     "show_name": "2 Broke Girls", 
     "status": "Continuing", 
     "tvdbid": 248741, 
     "tvrage_id": 28416, 
     "tvrage_name": "2 Broke Girls" 
    }, 
    "Alias": { 
     ... 
    }, 
    "message": "", 
    "result": "success" 
    } 
} 

我怎麼能順利通過所有正在返回不同的節目迭代?我不能使用response.data.SHOWNAME,因爲節目將會有很多變化。

我嘗試了一些使用$.each()的解決方案,但我並沒有真正讓這些工作。 我可以儘可能訪問它自己的每個節目標題,但其他數據不斷得到返回爲[Object object]

編輯:爲了使它更清楚一點,我需要訪問該字段。 response.data.RANDOM_TITLE.tvrage_name & response.data.RANDOM_TITLE.status

+0

+1表示在該列表上具有別名。 – OneOfOne

+0

你怎麼知道「消息」不是節目?因爲它不是一個對象? – dfsq

回答

2

我也是!

function getShows (json) { 

    // grab just the data part 
    var data = JSON.parse(json).data, 
     i, 

     // empty array for your shows 
     shows = []; 

    // delete the crap you don't want 
    delete data.message; 
    delete data.result; 

    // loop through everything else 
    for (i in data) { 

     // make sure it's an own property 
     if (data.hasOwnProperty(i)) { 

      // add to you collection of shows 
      shows.push(data[i]); 
     } 
    } 

    // tada 
    return shows; 
} 
+1

+1一起用於hasOwnProperty – Nimnam1

+1

就可以在此基礎上開展工作,我欠你一杯啤酒或餅乾......您的選擇。 – Crimson

+0

@Crimson document.cookie =「flavor = beer」; – reergymerej

0

您可以訪問諸如數據:

for(var show_name in response.data) { 
    var show = response.data[show_name]; 
    if(!(show instanceof Object)) continue; 
    console.log(show_name, show); 
    //note that not all browsers will print the "show" object, 
    //IE will just say [object] 
} 
0
for (name in data) { 
    if (data.hasOwnProperty(name)){ 
     //code here 
     //make sure to ignore message and result and any other special results returned. 
     showDetails = data[name]; 
    } 
} 

如果這裏的數據是返回的響應。

0

您可以將返回的數據分配給一個變量。

eg 

var jsonData = data; 
for(var i=0;t<=jsonData.length;i++){ 
    console.log(jsonData[i].data); 
} 
+0

這不是一個數組。 – OneOfOne

+0

甚至更​​好。只需將jsonData [0]與您的json物品 – R0ger

0

您可以訪問這樣的:

var dkeys = Object.keys(d.data); 
for (var i=0; i < dkeys.length; i++) { 
    if (typeof d.data[dkeys[i]].show_name !== 'undefined') { 
     alert(d.data[dkeys[i]].show_name); 
    } 
}