【问题标题】:Error when trying to get data from a json file尝试从 json 文件中获取数据时出错
【发布时间】:2018-08-09 01:00:17
【问题描述】:

我在尝试从 json 文件中获取数据时遇到错误。

当我使用此代码时, issuer_name 是 KeyError:

@ticket.command(pass_context=True)
@commands.has_role("Tech Support Lead")
async def info(self,ctx):
    ticket = ctx.message.content[13:]
    if ticket == "":
        await self.bot.say("Please supply a ticket id")
        return
    with open("data/tickets.json", "r") as f:
        tickets = json.load(f)
    print(tickets[ticket]["issuer_name"])

当我使用此代码时,它是 TypeError(列表索引必须是 int 或 slice,而不是 str):

@ticket.command(pass_context=True)
@commands.has_role("Tech Support Lead")
async def info(self,ctx):
    ticket = ctx.message.content[13:]
    if ticket == "":
        await self.bot.say("Please supply a ticket id")
        return
    with open("data/tickets.json", "r") as f:
        tickets = json.load(f)
    print(tickets[ticket]["ticket_data"]["issuer_name"])

这是我的 JSON 文件:

   {"amount_of_open_tickets": 1, "13": {"ticket_data": [{"issuer_id": 
   "244204285729046528", "issuer_name": "Veestire", "ticket_message": "l", 
   "claimed": null}]}}

【问题讨论】:

  • 您的 ticket_data 是一个列表。您无法使用键访问列表元素

标签: python json discord.py


【解决方案1】:

这是一个工作示例。您的 ticket_data 键的值是一个列表而不是单个对象

a="""{"amount_of_open_tickets": 1, "13": {"ticket_data": [{"issuer_id": 
   "244204285729046528", "issuer_name": "Veestire", "ticket_message": "l", 
   "claimed": null}]}}"""
b=json.loads(a)
b['13']["ticket_data"][0][u'issuer_name'] #u'Veestire'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2020-07-25
    • 2020-03-02
    • 2018-02-17
    相关资源
    最近更新 更多