首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError:“数据”

KeyError:“数据”
EN

Stack Overflow用户
提问于 2022-01-11 14:40:43
回答 2查看 766关注 0票数 0

我目前在一个与Controlpanel API交互的不和谐的机器人上。(https://documenter.getpostman.com/view/9044962/TzY69ub2#02b8da43-ab01-487d-b2f5-5f8699b509cd)

现在,在列出特定用户时,我将获得一个KeyError。

代码语言:javascript
复制
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)

那是蟒蛇。

错误:

代码语言:javascript
复制
for user in json.loads(data)['data']:

KeyError:“数据”

我怎么才能解决这个问题?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-01-13 11:06:29

这个KeyError通常发生在键不存在时(不存在,甚至不存在)。在您的情况下,我认为您的响应中没有“数据”键,您应该使用以下内容:

代码语言:javascript
复制
data.json()

如果你能贴出完整的回复,给你一些提示就更方便了。

票数 1
EN

Stack Overflow用户

发布于 2022-01-11 18:12:56

要命中的端点不是返回列表,而是返回单个对象。

您应该使用泛型端点:{{url}}/api/users

另外,我不认为您希望为每个用户重新创建您的embed对象。

代码语言:javascript
复制
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__

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

https://stackoverflow.com/questions/70668633

复制
相关文章

相似问题

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