首页 > 解决方案 > 从 json api 解析信息的问题

问题描述

我正在为我正在处理的机器人解析一些来自琐事 api 的数据,我从https://opentdb.com/api.php?amount=1&type=提取它,当我通过这段代码解析它时

response = requests.get('https://opentdb.com/api.php?amount=1&type=')
data = response.text
parsed = json.loads(data)
question = parsed["results"]["question"]
await ctx.send(question)

我收到此错误:

list indices must be integers or slices, not str

我在解析它之前得到了纯 json,但现在它一直给我这个错误。这可能与我解析它的方式有关。任何帮助将不胜感激!

标签: pythonjson

解决方案


首先,您不需要获取文本然后转换为 json:

data = response.text
parsed = json.loads(data)

requests 具有通过以下方式将响应转换为 json 的功能:

response.json()

在从 parsed["results"] 获取 ["question"] 的步骤中出现错误,因为 parsed["results"] 是列表类型,你应该通过数字来获取它,比如 0

question = parsed["results"][0]

然后你可以得到问题:

question = parsed["results"][0]['question']
await ctx.send(question)

推荐阅读