You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中对比JSON值与字典并验证用户权限

修正后的权限验证函数

原代码存在的问题

  • 函数定义缺少冒号,不符合Python语法规范
  • 使用未定义的变量(USERS、USER_NAME)作为字典键,应直接使用字符串字面量
  • JSON中accesslevel是列表类型,原代码直接取值会出错,需提取列表内的元素;且变量名与键名重复导致逻辑错误
  • 条件判断使用了大写AND,Python中逻辑与应为小写and,同时条件语句末尾缺少冒号
  • 硬编码了特定用户名和权限,未利用user_access字典实现通用验证
  • Python3中print是函数,需添加括号调用

修正后的代码

# 假设user_access字典已提前定义
user_access = {
  "user": "WORKER",
  "user2": "ADMIN",
  "user3": "WORKER",
  "user4": "GENERAL"
}

def LoadUserList(apijson):
    # 遍历API返回的用户列表
    for user_result in apijson["users"]:
        username = user_result["username"]
        # 提取JSON中的权限值(accesslevel是列表,取第一个元素)
        json_access = user_result["accesslevel"][0]
        # 从配置字典中获取预期权限,用户不存在则返回None
        expected_access = user_access.get(username)
        
        if expected_access is None:
            print(f"用户 {username} 未在权限配置中")
        elif json_access == expected_access:
            print(f"用户 {username}: success")
        else:
            print(f"用户 {username}: not matching")

代码说明

  1. 语法修复:补全函数定义和条件语句的冒号,遵循Python语法规范
  2. 键访问修正:直接用字符串"users"、"username"、"accesslevel"访问JSON数据,避免未定义变量问题
  3. 列表处理:通过[0]提取accesslevel列表中的权限值,适配JSON数据结构
  4. 通用验证:利用user_access.get(username)安全获取预期权限,同时处理用户不在配置字典中的情况
  5. 清晰输出:使用格式化字符串明确每个用户的验证结果,便于排查问题

内容的提问来源于stack exchange,提问作者user3354840

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:30:59