我正在尝试编写一个脚本,该脚本将从我们的监控工具中提取当前状态并在 MS SQL DB 中更新它们。当我调用 API 时,我收到了 JSON 格式的巨大响应:
{
"hoststatuslist": {
"recordcount": "1084",
"hoststatus": [
{
"@attributes": {
"id": "XXXX"
},
"host_id": "XXX",
"name": "XXXXX",
"display_name": "XXXXXXX",
"address": "XXXXXX",
"alias": "XXXXXX",
"status_text": "XXXXXXXXXXXXXXXXXXXXXXX",
etc.
},
{
"@attributes": {
"id": "XXXX"
},
"host_id": "XXX",
"name": "XXXXX",
"display_name": "XXXXXXX",
"address": "XXXXXX",
"alias": "XXXXXX",
"status_text": "XXXXXXXXXXXXXXXXXXXXXXX",
etc.
},
etc.
]
}
}
如您所见,我获得了 1000 多个具有属性的主机对象。我想解析响应,以便我可以添加/更新 MS SQL 数据库。我正在尝试解析每个主机的 _hostid 、 name 和 _statustext 。
我尝试做类似 Python - 解析 JSON 数据集 的事情,但我不断收到响应对象没有属性读取或解码的错误。
这是我当前的代码:
import requests
import json
response = requests.get('url with API Key')
decoded_response = response.read().decode("UTF-8")
data = json.loads(decoded_response)
jsonData = data["hoststatus"]
for host in jsonData:
Name = host.get("name")
StatusText = host.get("status_text")
如果有人建议用另一种语言或工具来做到这一点,我很乐意接受。我需要调用大约 20 个 API,并将所有状态/其他信息放入数据库中,以便它们都在一个位置。
任何帮助表示赞赏。
原文由 Wish I Knew this stuff 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如@danil-kondratiev 所说,您可以使用 response.json() 并且不需要编码/解码。这对你有用吗?