Tim Luka
Tim Luka

Reputation: 481

Getting a specific value of JSON data

I'm getting a JSON data from RESTCONF HTTPS request, using the following code

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()

The data I got is the following:

{
    "Cisco-IOS-XE-segment-routing:ipv4": {
        "prefixes": [
            {
                "ipprefix": "1.1.1.1/32",
                "index": {
                    "range-start": 333,
                    "range": 1
                }
            }
        ]
    }
}

Basically, I want to return the field's "range-start" value which is 333. I tried the following but it did not work.

for element in r: 
    id = element['range-start'] 
    print(id) 

Is there anyway to get that value?

Upvotes: 0

Views: 97

Answers (3)

lukas
lukas

Reputation: 141

Since you are looping over elements, I would suggest this approach using a helper function:

def get_id(element):
    prefixes = r.json()["Cisco-IOS-XE-segment-routing:ipv4"]["prefixes"]
    id = prefixes[0]["index"]["range-start"]
    return id

Then you can do, as in your question:

for element in r:
    id = get_id(element)
    print(id)

Upvotes: 0

franlatte
franlatte

Reputation: 26

From Python Console:

>>> 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

>>>

Upvotes: 1

SupremeSteak1
SupremeSteak1

Reputation: 136

You need to start at the beginning of the JSON and work your way to the key you want. To do this you need to start at Cisco-IOS-XE-segment-routing:ipv4.

prefixes = r.json()["Cisco-IOS-XE-segment-routing:ipv4"]["prefixes"]
id = prefixes[0]["index"]["range-start"]

If there are multiple prefixes you can loop over them and access each range-start.

Upvotes: 0

Related Questions