获取特定值的JSON数据

时间:2019-05-23 08:56:11

标签: python json

我正在使用以下代码从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-native:Tunnel": {
        "name": 0,
        "bandwidth": {
            "kilobits": 256
        },
        "ip": {
            "address": {
                "primary": {
                    "address": "10.10.1.1",
                    "mask": "255.255.255.252"
                }
            }
        },
        "load-interval": 30,
        "Cisco-IOS-XE-tunnel:tunnel": {
            "source": "GigabitEthernet1",
            "destination": {
                "ipaddress-or-host": "10.2.1.3"
            }
        }
    }
}

基本上,我希望我的函数返回该字段的"bandwidth"256。我尝试了以下方法,但没有用。

capacity = r.json()['Cisco-IOS-XE-native:Tunnel']['bandwidth']

1 个答案:

答案 0 :(得分:1)

尝试一下:

j={
    "Cisco-IOS-XE-native:Tunnel": {
        "name": 0,
        "bandwidth": {
            "kilobits": 256
        },
        "ip": {
            "address": {
                "primary": {
                    "address": "10.10.1.1",
                    "mask": "255.255.255.252"
                }
            }
        },
        "load-interval": 30,
        "Cisco-IOS-XE-tunnel:tunnel": {
            "source": "GigabitEthernet1",
            "destination": {
                "ipaddress-or-host": "10.2.1.3"
            }
        }
    }
}
print(j['Cisco-IOS-XE-native:Tunnel']['bandwidth'])

这将返回:

{'kilobits': 256}

对于256:

print(j['Cisco-IOS-XE-native:Tunnel']['bandwidth']['kilobits'])