2017-07-31 167 views
1

我剛剛製作了一個程序來解析api中的一些數據。 api以JSON格式返回數據。當我嘗試解析它,它給了我一個關鍵的錯誤在Python中解析JSON時獲取Keyerror

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"}]} 
+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' 
+0

向下投票呵呵!請解釋一下? –

0

試試這個,

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

'updates'鍵在字典列表中包含值。您需要傳遞'updates'索引,然後訪問'url'鍵。 –

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