如何在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")
代码说明
- 语法修复:补全函数定义和条件语句的冒号,遵循Python语法规范
- 键访问修正:直接用字符串
"users"、"username"、"accesslevel"访问JSON数据,避免未定义变量问题 - 列表处理:通过
[0]提取accesslevel列表中的权限值,适配JSON数据结构 - 通用验证:利用
user_access.get(username)安全获取预期权限,同时处理用户不在配置字典中的情况 - 清晰输出:使用格式化字符串明确每个用户的验证结果,便于排查问题
内容的提问来源于stack exchange,提问作者user3354840
相关产品推荐
相关产品推荐

