How can I access a JS object property whose value is an unknown integer?
此Wikipedia API调用返回的JSON响应是一系列嵌套对象。要遍历对象属性链并访问感兴趣的文本,我首先必须访问一个值为随机数的属性,具体取决于我按标题查询的维基百科页面。
标题为
对象属性链:
1 | responseJSON.wiki[0].query.pages[<<page id>>].extract |
API调用示例:https://en.wikipedia.org/w/api.php/?origin=*
好吧,如果pages对象上总是有一个属性,那么您可以尝试以下任何一种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | if (typeof Object.values !== 'function') { Object.values = obj => Object.keys(obj).map(key => obj[key]); } const responseJSON = { "batchcomplete":"", "query": { "pages": { "49728": { "pageid": 49728, "ns": 0, "title":"San Francisco", "extract":"Some text" } } } } const pages = responseJSON.query.pages; const extractedWithKeys = pages[Object.keys(pages)[0]]; const extractedObjValues = Object.values(pages)[0]; console.log(extractedWithKeys, extractedObjValues) |
如果您的
还请注意,您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function getWiki(obj) { return $.ajax({ url:"http://en.wikipedia.org/w/api.php" + "?origin=*" +"&format=json" + "&action=query" +"&prop=extracts" + "&exintro=" +"&explaintext=" +"&titles=" + obj.position, method: 'GET', type: 'json' }).promise() } function dig(object) { return object[Object.keys(object)[0]] } getWiki({ position: 'San Francisco' }) .then(function(json) { console.log( dig(json.query.pages).extract //=> 'San Francisco (SF) ...' ) }) |
1 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> |
如果将
API调用示例:https://en.wikipedia.org/w/api.php?action=query