简体   繁体   中英

Getting Keyerror when parsing JSON in Python

I have just made a program to parse some data from an api. The api gives data back with a JSON format. When I try to parse it it gives me a key error

    url = json.loads(r.text)["url"]
    KeyError: 'url'

This is the part of the code

url = json.loads(r.text)["url"]

I am trying to get the data in the plain field. Here is the output from the API:

{"updates":[{"id":"a6aa-8bd","description":"Bug fixes and enhancemets","version":"8.1.30","type":"firmware","url":"https://con-man.company.com/api/v1/file-732e844b","updated":"2017-07-25"}]}

try this,

url = json.loads(r.text)["updates"][0]["url"]

You cannot access url since it is inside update (list), therefore you need to Pass index and then key :

One liner:

>>> url = json.loads(r.text)['updates'][0]['url']
'https://con-man.company.com/api/v1/file-732e844b'

Explicit

>>> jobj = json.loads(r.text)
>>> url = jobj['updates'][0]['url']
'https://con-man.company.com/api/v1/file-732e844b'
{
 "updates": [ 
              {
               "id":"a6aa-8bd",
               "description":"Bug fixes and enhancemets",
               "version":"8.1.30",
               "type":"firmware",
               "url":"https://con-man.company.com/api/v1/file-732e844b",
              "updated":"2017-07-25"
              }
           ]
}

Try to visualize of your dict, it has only one key " update " in that key value it has another list and into that list, you has another dict

so if in your case

 _dict = json.loads(r.text)   # read file and load dict
 _list = _dict['updates']     # read list inside dict
 _dict_1 = _list[0]       # read list first value and load dict 
 url = _dict_1['url']     # read 'url' key from dict 

I used this and works now for me.

json_object = json.loads(response.content.decode("utf-8"))['list'][0]['localPercentDynamicObjectsUsed']

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM