我目前在一个与Controlpanel API交互的不和谐的机器人上。(https://documenter.getpostman.com/view/9044962/TzY69ub2#02b8da43-ab01-487d-b2f5-5f8699b509cd)
现在,在列出特定用户时,我将获得一个KeyError。
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer <censored>'
}
url = "https://<censored>"
endpoint = f"/api/users/{user}"
if __name__ == '__main__':
data = requests.get(f'{url}{endpoint}', headers=headers).text
for user in json.loads(data)['data']:
embed = discord.Embed(title="Users")
embed.add_field(name=user['id'], value=user['name'])
await ctx.send(embed=embed)那是蟒蛇。
错误:
for user in json.loads(data)['data']:KeyError:“数据”
我怎么才能解决这个问题?
谢谢!
发布于 2022-01-13 11:06:29
这个KeyError通常发生在键不存在时(不存在,甚至不存在)。在您的情况下,我认为您的响应中没有“数据”键,您应该使用以下内容:
data.json()如果你能贴出完整的回复,给你一些提示就更方便了。
发布于 2022-01-11 18:12:56
要命中的端点不是返回列表,而是返回单个对象。
您应该使用泛型端点:{{url}}/api/users
另外,我不认为您希望为每个用户重新创建您的embed对象。
headers = {
'Authorization': 'Bearer <censored>'
}
url = 'https://<censored>'
endpoint = '/api/users'
if __name__ == '__main__':
embed = discord.Embed(title="Users")
for user in requests.get(
f'{url}{endpoint}', headers=headers
).json()['data']:
embed.add_field(name=user['id'], value=user['name'])
await ctx.send(embed=embed)而且,我很确定你不能就这样在await的__main__。
https://stackoverflow.com/questions/70668633
复制相似问题