【发布时间】:2020-04-29 08:41:56
【问题描述】:
我目前正在处理一些具有挑战性的 JSON 数据,我需要在我的脚本中的延迟浮动旁边打印设备名称,我可以轻松打印延迟浮动,因为有一个 key:value ,但是设备名称不一样,因此我无法弄清楚如何打印它,尤其是当它为我循环通过以检索数据的每个 API Url 发生变化时
我要打印的数据是"DEVICE123-Et10"
请参阅下面的 JSON 数据,
{
"notifications": [
{
"timestamp": "511513234234",
"path_elements": [
"Devices",
"DEVICE1",
"versioned-data",
"connectivityMonitor",
"status",
"hostStatus",
"DEVICE123-Et10",
"defaultStats"
],
"updates": {
"httpResponseTime": {
"key": "httpResponseTime",
"value": {
"float": 0
}
}
}
},
{
"timestamp": "15153324243",
"path_elements": [
"Devices",
"DEVICE1",
"versioned-data",
"connectivityMonitor",
"status",
"hostStatus",
"DEVICE123-Et10",
"defaultStats"
],
"updates": {
"packetLoss": {
"key": "packetLoss",
"value": {
"int": 0
}
}
}
},
{
"timestamp": "151522324234",
"path_elements": [
"Devices",
"DEVICE1",
"versioned-data",
"connectivityMonitor",
"status",
"hostStatus",
"DEVICE123-Et10",
"defaultStats"
],
"updates": {
"latency": {
"key": "latency",
"value": {
"float": 0.238756565643454
}
}
}
},
{
"timestamp": "158056745645645",
"path_elements": [
"Devices",
"DEVICE1",
"versioned-data",
"connectivityMonitor",
"status",
"hostStatus",
"DEVICE123-Et10",
"defaultStats"
],
"updates": {
"jitter": {
"key": "jitter",
"value": {
"float": 0.03500000213213
}
}
}
}
]
}
我用来循环浏览我的 URL 列表并获取延迟的当前代码:
jsonrequest = requests.get(url, cookies=cookies, verify=False).json()
try:
print(jsonrequest['notifications'][2]['updates']['latency']['value']['float'])
except KeyError:
print(jsonrequest['notifications'][1]['updates']['latency']['value']['float'])```
【问题讨论】:
-
由于设备名称在列表中总是倒数第二个,因此只需使用键“path_elements”访问列表,然后获取倒数第二个元素。类似
json_data["path_elements"][-2]
标签: python json python-3.x api python-requests