Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取JSON数据的特定值_Python_Json_Parsing - Fatal编程技术网

Python 获取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)

我使用以下代码从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
                }
            }
        ]
    }
}
基本上,我想返回字段的范围起始值,即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

>>>