Получение определенного значения данных JSON - PullRequest
0 голосов
/ 20 мая 2019

Я получаю данные JSON из запроса RESTCONF HTTPS, используя следующий код

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) 

Есть ли способ получить это значение?

Ответы [ 3 ]

1 голос
/ 20 мая 2019

Из консоли 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

>>>
0 голосов
/ 20 мая 2019

Поскольку вы зацикливаетесь на элементах, я бы предложил этот подход, используя вспомогательную функцию:

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)
0 голосов
/ 20 мая 2019

Вам нужно начать с начала 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.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...