如何从Wikipedia API访问此JSON响应中的信息?

时间:2016-01-28 16:11:32

标签: javascript jquery json

我认为这应该很简单,但过去几个小时我一直在与它斗争,这真的让人感到沮丧。

我正在使用jQuery调用Wikipedia 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);
            }
        });

$(this).data(' name')位是化学元素的名称,比如" Scandium"为了讨论。

现在,这个调用工作正常,我按预期从API中获取一个JSON对象。但是,我很难真正处理这些信息。下面是在我的javascript控制台中展开的对象的屏幕截图:

enter image description here

说我想打印出"提取物"这个对象的一部分,仅此一点,我该怎么做?

我通常只使用点符号并按照console.log(data.query.pages ......)的方式做一些事情,但后来我碰到了一堵砖墙,因为链条的下一部分是一个整数,不仅如此,而且它是一个我不会总是知道的整数,因为它会根据我呼叫的元素而有所不同。

非常感谢任何建议!

1 个答案:

答案 0 :(得分: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调用返回的数据。