在Python中解析JSON时获取Keyerror

时间:2017-07-31 06:05:21

标签: python json string parsing

我刚刚制作了一个程序来解析api中的一些数据。 api以JSON格式返回数据。当我尝试解析它时,它给了我一个关键错误

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

这是代码的一部分

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

我正在尝试在普通字段中获取数据。以下是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"}]}

4 个答案:

答案 0 :(得分:0)

试试这个,

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

答案 1 :(得分:0)

您无法访问url,因为它位于更新内(列表),因此您需要传递索引,然后key

一个班轮:

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

明确

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

答案 2 :(得分:0)

{
 "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"
              }
           ]
}

尝试想象您的字典,它只有一个键" 更新"在该键值中,它有另一个列表,并且在该列表中,您有另一个词典

所以,如果在你的情况下

 _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 

答案 3 :(得分:0)

我用了这个,现在为我工作。

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