編輯:這裏有更多的上下文的JSON如何接收。我使用的是阿皮亞伊API生成到自己的平臺的要求,他們有一個方法來檢索,就像這樣:KeyError異常讀取JSON文件
# instantiate ApiAI
ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)
# declare a request obect, fill in in lower lines
request = ai.text_request()
# send ApiAI the request
request.query = "{}".format(textobject.body)
# get response from ApiAI
response = request.getresponse()
response_decode = response.read().decode("utf-8")
response_data = json.loads(response_decode)
我編碼在Django web應用程序,並試圖通過閱讀發送到webhook的JSON響應。該代碼通過JSON閱讀,它已被解碼後,是:
if response_data['result']['action'] != "":
Request.objects.create(
request = response_data['result']['resolvedQuery']
)
當我嘗試運行這段代碼,我得到這個錯誤:
KeyError: 'result'
上線
if response_data['result']['action'] != "":
我很困惑,因爲它在我看來像'result'
應該是這個正在閱讀的JSON的有效鍵:
{
'id':'65738806-eb8b-4c9a-929f-28dc09d6a333',
'timestamp':'2017-07-10T04:59:46.345Z',
'lang':'en',
'result':{
'source':'agent',
'resolvedQuery':'Foobar',
'action':'Baz'
},
'alternateResult':{
'source':'domains',
'resolvedQuery':'abcdef',
'actionIncomplete':False,
},
'status':{
'code':200,
'errorType':'success'
}
}
有另一種方式,我應該來讀這個JSON在我的計劃?
需要更多的上下文,請在發佈代碼的問題行之前,包括如何響應從JSON序列化Python對象。 – wmorrell
這不是正在加載的JSON,我相信你沒有正確加載它,你做了json.loads? –
是的,在將響應解碼爲utf-8之後,我使用了'json.loads'。從那裏,我試圖訪問它內的元素,就像我用普通的json一樣。 – hackerman