首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError读取JSON文件

KeyError读取JSON文件
EN

Stack Overflow用户
提问于 2017-07-10 05:53:41
回答 2查看 635关注 0票数 2

编辑:以下是关于如何接收JSON的更多上下文。我正在使用ApiAI API向他们的平台生成一个请求,他们有一个方法来检索它,如下所示:

代码语言:javascript
复制
# 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编写一个webapp,并试图通过一个JSON响应POSTed来读取一个web钩子。在对JSON进行解码之后,要读取的代码是:

代码语言:javascript
复制
if response_data['result']['action'] != "":
    Request.objects.create(
        request = response_data['result']['resolvedQuery']
    )

当我试图运行这段代码时,我会得到以下错误:

代码语言:javascript
复制
KeyError: 'result'

在线上

代码语言:javascript
复制
if response_data['result']['action'] != "":

我感到困惑,因为在我看来,'result'应该是正在读取的这个JSON的有效密钥:

代码语言:javascript
复制
{  
   '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吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-10 06:06:03

尝试:

代码语言:javascript
复制
import JSON
if 'action' in response_data:
    parsed_data = json.loads(response_data)
    if parsed_data['result']['action'] != "":
        Request.objects.create(request = parsed_data['result']['resolvedQuery'])
票数 1
EN

Stack Overflow用户

发布于 2017-07-10 23:37:45

谢谢大家的想法。结果发现,我试图实现ApiAI API时还有另一个错误,这是导致这个错误的原因。它现在阅读JSON罚款,我正在使用@sasuke的建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45004610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档