2016-01-28 47 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调用返回的数据。