Python 获取JSON数据的特定值
我使用以下代码从RESTCONF HTTPS请求中获取JSON数据Python 获取JSON数据的特定值,python,json,parsing,Python,Json,Parsing,我使用以下代码从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)
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
}
}
]
}
}
基本上,我想返回字段的范围起始值,即333。我尝试了以下方法,但没有成功
for element in r:
id = element['range-start']
print(id)
还有什么方法可以获得该值吗?您需要从JSON的开头开始,然后按照您想要的键进行操作。为此,您需要从Cisco IOS XE段路由开始:ipv4 如果有多个前缀,您可以循环使用它们并访问每个范围的起始位置。从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
>>>
由于您在元素上循环,因此我建议使用辅助函数来实现此方法: def获取元素: 前缀=r.json[Cisco IOS XE段路由:ipv4][前缀] id=前缀[0][index][range start] 返回id 然后你可以做,就像你的问题一样: 对于r中的元素: id=获取元素 打印ID r、 json['Cisco-IOS-XE-segment-routing:ipv4']['prefixes'][0]['index']['range-start']
>>> 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
>>>