【问题标题】:How to get nested JSON file如何获取嵌套的 JSON 文件
【发布时间】:2022-01-08 00:35:27
【问题描述】:

我正在尝试在 discord bot 中制作警告系统,但在此之前我尝试制作它的 RAW 代码。我已经知道的结构,但是当它转到 JSON 文件时,我不知道更多 我困惑的部分在这里

checkname = any(d['USER ID'] == id_card for d in json_load['user_id'])
if checkname == True:
    print(json_load['user_id']['WARN STATUS'])
if checkname == False:
    write_json(dump_data)

这是我的 JSON 文件

{
    "guild_configuration": {
        "guild_ids": [
            11111111111111
        ],
        "token": "SENSOR"
    },
    "user_id": [
        {
            "USER ID": "385053392059236353",
            "USERNAME": "MorpKnight",
            "WARN STATUS": "Unwarned",
            "WARNING": 0
        },
        {
            "USER ID": "128418907681764",
            "USERNAM": "TESTING",
            "WARN STATUS": "WARNED",
            "WARNING": 1
        }
    ]
}

我首先知道我需要检查 USER ID 是否是我警告过的人。然后我需要检查“警告”和“警告状态”,但我不知道怎么做?有什么想法吗?

【问题讨论】:

    标签: python json discord.py


    【解决方案1】:

    一个简单的解决方案是遍历user_id 列表中的元素,然后在USER ID 匹配时遍历break。这假设用户 ID 是唯一的,我相信 Discord 就是这种情况。我试图尽可能接近地匹配 sn-p 中的逻辑,但是由于您没有为某些变量提供值(并且在语法上它不太正确,因为您需要为索引json_load['user_id'])可能并不完美:

    found_user = True
    for user in json_load['user_id']:
        if user['USER ID'] == id_card:
            print(user['WARN STATUS'])
            found_user = True
            break
    
    if not found_user:
        write_json(dump_data)
    

    【讨论】:

    • 那么,更改“WARN STATUS”后如何转储它?
    • 你可以使用json.dump()
    【解决方案2】:

    搜索 USER ID ,如果它在那里得到警告状态。否则转储 json。

    warn_status = next(
        (user['WARN STATUS'] for user in json_load['user_id']
         if user['USER ID'] == id_card), None)
    if warn_status:
        print(json_load['user_id']['WARN STATUS'])
    else:
        write_json(dump_data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      相关资源
      最近更新 更多