编辑:这里有更多的上下文的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