2016-01-28 46 views
-1

我認爲這應該很簡單,但是我在過去的幾個小時裏一直在與它鬥爭,這成爲一個真正的挫折感。如何從Wikipedia API訪問此JSON響應中的信息?

我正在與jQuery的維基百科API的調用,如下所示:

var apiurl = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles='+$(this).data('name'); 

     $.ajax({ 
      url: apiurl, 
      jsonp: "callback", 
      dataType: 'jsonp', 
      data: '', 
      xhrFields: { withCredentials: true }, 
      success: function(data) { 
       console.log(data); 
      } 
     }); 

的$(本)。數據(「名稱」)比特是一種化學元素的名字,說「鈧「爲討論起見。

現在,這個調用可以正常工作,並且我可以按預期從API獲取JSON對象。不過,我正在努力處理這些信息。下面是該對象的截圖擴大了我的JavaScript控制檯:

enter image description here

說我想打印出這個對象的「提取」的一部分,僅此,我會怎麼做呢?

我通常只是使用點符號,並沿着console.log(data.query.pages ......)的方式做一些事情,但後來我撞上了一堵磚牆,因爲鏈條的下一部分是一個整數,不僅如此,但它是一個整數,我將永遠不知道,因爲這將取決於我打電話到什麼元素不同。

任何意見非常感謝!

+2

相似的問題:[如何從維基百科API使用JSON檢索數據](http://stackoverflow.com/questions/16735437/how-to-retrieve-data-from-wikipedia-api-using-json)和[JavaScript從維基百科API提取數據](http://stackoverflow.com/questions/30226255/javascript-extract-data-from-wikipedia-api?lq=1) – Roberto

+0

在這種情況下,你會'data.query .pages.27116.extract'。 –

+0

@ oxguy3 [這不行](http://imgur.com/PVIUOAc)。 –

回答

3

作爲替代以點符號表示,可以使用下標符號:

console.log(data["query"]["pages"][27116]["extract"]); 

如果您不知道整數將時間提前了什麼,你可以循環對象的像這樣的屬性:

var pages = data["query"]["pages"]; 
for(var key in pages) { 
    if(pages.hasOwnProperty(key)) { 
     // Here, 'key' is bound to an attribute 
     // name so we can get the associated value like so: 
     var value = pages[key]; 

     // In your example, value should look like 
     // {"extract": "Scandium is a chem...", "ns": 0, ... } 
    } 
} 

的「hasOwnProperty」支票讓您的循環從考慮該屬性「頁」繼承。這樣,循環將只處理從API調用返回的數據。