java - 如何获得一个始终更改其名称的 JSON 对象
问题描述
我想从 Wikipedia 获取主图像 URL,但问题是 pageID 总是在变化,现在我不知道如何获取 URL。这是api请求
https://en.wikipedia.org/w/api.php?
action=query&titles=Max_Verstappen&prop=pageimages&pithumbsize=300&format=json
这是回应
{
"batchcomplete": "",
"query": {
"normalized": [
{
"from": "Max_Verstappen",
"to": "Max Verstappen"
}
],
"pages": {
"41758713": {
"pageid": 41758713,
"ns": 0,
"title": "Max Verstappen",
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Max_Verstappen_2017_Malaysia_3.jpg/200px-Max_Verstappen_2017_Malaysia_3.jpg",
"width": 200,
"height": 300
},
"pageimage": "Max_Verstappen_2017_Malaysia_3.jpg"
}
}
}
}
这是现在的代码,我认为我将使用此代码访问 URL
JSONObject jsonObject = new JSONObject(jsonResponse);
JSONObject query = jsonObject.getJSONObject("query");
JSONObject pages = jsonObject.getJSONObject("pages");
但现在我到了必须知道 pageID 的地步,但我不能,因为我想从许多 Wikipedia 文章中获取许多 url。那么有没有更简单的方法来获取网址?
解决方案
您可以简单地获取对象的键值:
JSONObject pages = jsonObject.getJSONObject("pages");
for (String key : pages.keys()) {
System.out.println(key); // will print '41758713' from your example
}
推荐阅读
- permissions - 更改 VScode 权限
- vb.net - 无法同时运行 VB.net 应用程序
- php - IntelliJ IDEA 中的 PHP Xdebug Laravel 应用程序
- c++ - 输出是如何计算的?
- kubernetes - 使用 go-template 从 kubectl 输出中提取 LoadBalancer 名称
- node-red - 节点红色凭证文件 - 丢失和现在的错误
- python - 如何在python中的数据集的两个不同列中找到相同值的匹配
- amazon-vpc - 同一安全组中的实例能否以任何方式相互通信
- html - html DOM的Javascript语音控制
- java - 实现具有 @query 注释的现有接口