python - 获取 JSON 和 Python 中的特定值
问题描述
我使用以下代码从 RESTCONF HTTPS 请求中获取 JSON 数据。
https_request = 'https://' + host + '/restconf/data/Cisco-IOS-XE-native:native/interface/'
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()
我得到的 JSON 文件:
{
"Cisco-IOS-XE-native:interface": {
"GigabitEthernet": [
{
"name": "1",
"description": "DON'T TOUCH ME",
"isis": {
"Cisco-IOS-XE-isis:metric": {
"value": 2
}
....
},
{
"name": "2",
"isis": {
"Cisco-IOS-XE-isis:metric": {
"value": 4
} ....
},
{
"name": "3",
"shutdown": [
null
],
"isis": {
"Cisco-IOS-XE-isis:metric": {
"value": 7
}....
}
],
"Loopback": [
{
"name": 0,
"isis": {
"Cisco-IOS-XE-isis:metric": {
"value": 1
}
],
"Tunnel": [
{
"name": 0,
"isis": {
"Cisco-IOS-XE-isis:metric": {
"value": 3
}....
}
]
}
基本上,我希望我的函数返回每个接口的"value"
字段isis
。我尝试了以下代码GigabitEthernet
:
value = r.json()['Cisco-IOS-XE-native:interface']['GigabitEthernet'][0]['isis']['metric']['value']
我收到了这个错误:
print Router_1.get_isis_metric()['Cisco-IOS-XE-native:interface']['GigabitEthernet'][0]['isis']['metric']['isis']
KeyError: 'metric'
解决方案
我想,你拼错metric
了Cisco-IOS-XE-isis:metric
尝试 :
value = r.json()['Cisco-IOS-XE-native:interface']['GigabitEthernet'][0]['isis']['Cisco-IOS-XE-isis:metric']['value']
编辑 1
for index in range(len(r.json()['Cisco-IOS-XE-native:interface']['GigabitEthernet'])):
value = r.json()['Cisco-IOS-XE-native:interface']['GigabitEthernet'][index]['isis']['Cisco-IOS-XE-isis:metric']['value']
print(value)
推荐阅读
- heroku - Laravel 无法访问数据库
- dashboard - 导出 Zabbix 仪表板
- javascript - react-spring:过渡组件问题
- angular - 如何从Angular8(独立组件)中的另一个组件传递一个组件的值
- android - 如何使用 Glide 加载 gif 图片 url?
- javascript - JavaScript 中静态变量的工作
- c++ - 从 C++ 中的文本文件中删除和更新产品
- mysql - ALTER VIEW 只为一个视图插入数据库前缀
- sql - 如何通过使用 JPA 或 Hibernate 中的标准构建器连接同一个表来选择值
- android - 未找到 com.google.android.gms.internal.zzeku 的类文件