我正在使用以下代码从RESTCONF HTTPS请求中获取JSON数据
https_request = 'https://' + host + '/restconf/data/' + operation
headers = {'Content-type': 'application/yang-data+json', 'Accept': 'application/yang-data+json'}
r = requests.get(https_request, auth=(user, password), headers=headers, verify=False)
print r.json()
我得到的数据如下:
{
"Cisco-IOS-XE-segment-routing:ipv4": {
"prefixes": [
{
"ipprefix": "1.1.1.1/32",
"index": {
"range-start": 333,
"range": 1
}
}
]
}
}
基本上,我想返回字段"range-start"
的值333
。我尝试了以下方法,但没有用。
for element in r:
id = element['range-start']
print(id)
反正有得到这个价值的东西吗?
答案 0 :(得分:1)
从Python控制台:
>>> import json
... data = json.loads('{"Cisco-IOS-XE-segment-routing:ipv4": {"prefixes": [{"ipprefix": "1.1.1.1/32", "index": {"range-start": 333, "range": 1}}]}}')
... print(data['Cisco-IOS-XE-segment-routing:ipv4']['prefixes'][0]['index']['range-start'])
333
>>>
答案 1 :(得分:0)
您需要从JSON的开头开始,然后逐步找到所需的键。为此,您需要从Cisco-IOS-XE-segment-routing:ipv4
开始。
prefixes = r.json()["Cisco-IOS-XE-segment-routing:ipv4"]["prefixes"]
id = prefixes[0]["index"]["range-start"]
如果有多个前缀,则可以循环访问它们并访问每个range-start
。
答案 2 :(得分:0)
由于您正在遍历元素,所以我建议使用辅助函数使用这种方法:
def get_id(element):
prefixes = r.json()["Cisco-IOS-XE-segment-routing:ipv4"]["prefixes"]
id = prefixes[0]["index"]["range-start"]
return id
然后您可以按照您的问题进行操作:
for element in r:
id = get_id(element)
print(id)