javascript - 如果其他对象名称/键不断变化但要访问的对象名称/键保持不变,如何访问 Wikipedia API 中的对象?

标签 javascript wikipedia-api

我想从维基百科 API 获取图像。我正在做前端开发,所以我只能“GET”图像,没有后端。

这是通用 API:

https://en.wikipedia.org/w/api.php?action=query&titles=Image:Title_to_be_inserted_hered.jpg&prop=imageinfo&iiprop=url

当在 image: 之后插入标题时,会返回一个对象列表,其中包括图像的 URL,该图像稍后将被插入到网页中。

但是尝试了三个标题(意大利、爱因斯坦、奥巴马)后,返回的对象参数不同,但URL对象始终存在。

您可以注意到“Pages 对象”后面的内容始终会发生变化。

奥巴马:

https://en.wikipedia.org/w/api.php?action=query&titles=Image:obama.jpg&prop=imageinfo&iiprop=url

意大利:

https://en.wikipedia.org/w/api.php?action=query&titles=Image:italy.jpg&prop=imageinfo&iiprop=url

爱因斯坦:

https://en.wikipedia.org/w/api.php?action=query&titles=Image:einstein.jpg&prop=imageinfo&iiprop=url

我想要的只是获取 URL(使用 Ajax 或 JSON)并将其存储到我的脚本文件中的变量中。

最佳答案

一种方法是使用 Object.keys(obj) 。例如:

var pages = obj.query.pages,  // Get the pages object
    firstPage = pages[Object.keys(pages)[0]],  // Get the first page in the pages object
    src = firstPage.imageinfo[0].url;  // Get the first image url from the page above

这是一个实际示例,其中包含来自您的示例之一的数据:

var data = {"continue":{"iistart":"2007-04-19T23:10:16Z","continue":"||"},"query":{"normalized":[{"from":"Image:obama.jpg","to":"File:Obama.jpg"}],"pages":{"10783885":{"pageid":10783885,"ns":6,"title":"File:Obama.jpg","imagerepository":"local","imageinfo":[{"url":"https://upload.wikimedia.org/wikipedia/en/7/7a/Obama.jpg","descriptionurl":"https://en.wikipedia.org/wiki/File:Obama.jpg","descriptionshorturl":"https://en.wikipedia.org/w/index.php?curid=10783885"}]}}}};

var pages = data.query.pages,
    src = pages[Object.keys(pages)[0]].imageinfo[0].url;

document.write(src);

用任何 API 响应替换 data 仍将返回 imageinfo 中的第一个网址。

关于javascript - 如果其他对象名称/键不断变化但要访问的对象名称/键保持不变,如何访问 Wikipedia API 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37375015/

相关文章:

javascript - 正则表达式不会从字符串中删除非数字

javascript - Angular $location 更改后会返回

wikipedia - 是否有一个维基百科 API 仅用于检索内容摘要?

wikipedia-api - 如何从维基数据搜索结果中检索维基数据条目?

javascript - 在 Bootstrap Modal 中使用 HandsonTable 不起作用

javascript - 从png图像创建jpg图像时将html Canvas 黑色背景更改为白色背景

javascript - 突出显示时如何更改文本颜色?

wikipedia - 从导出的维基百科文章中检索 Interlanguage 链接?

java - 我需要数据库配置才能使用 JWPL 吗?

javascript - 从维基百科 API 获取 SVG 文件