
本文介绍如何从外部 json 文件中读取数据,并在 python 中编写可复用函数,根据指定 id 值高效查找对应对象,支持跨文件调用,适用于配置校验、用户查询等常见场景。
本文介绍如何从外部 json 文件中读取数据,并在 python 中编写可复用函数,根据指定 id 值高效查找对应对象,支持跨文件调用,适用于配置校验、用户查询等常见场景。
在实际开发中,常需从结构化 JSON 数据中检索特定记录(如按唯一 ID 查找用户)。以下是一个健壮、模块化的实现方案:
✅ 核心思路
- 将 JSON 数据持久化在
data.json文件中; - 编写独立函数
check_id(check)封装读取与查找逻辑,提升复用性; - 通过
item.get("ID")安全访问字段,避免 KeyError; - 支持跨模块调用(如从
main.py导入fetch_data.py中的函数)。
? 示例代码
1. 创建 fetch_data.py(工具模块):
import json
def check_id(check):
"""
在 data.json 中查找是否存在 ID 等于 check 的对象
Args:
check (int): 待匹配的 ID 值
Returns:
bool: 若存在匹配项返回 True,否则 False
"""
try:
with open("data.json", "r", encoding="utf-8") as file:
data = json.load(file)
if not isinstance(data, list):
raise ValueError("JSON root must be a list of objects")
return any(item.get("ID") == check for item in data)
except FileNotFoundError:
print("❌ Error: data.json not found.")
return False
except json.JSONDecodeError as e:
print(f"❌ Invalid JSON format: {e}")
return False
except Exception as e:
print(f"❌ Unexpected error: {e}")
return False
2. 创建 main.py(主调用入口):
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
from fetch_data import check_id
check = 1 # 替换为你需要验证的 ID 值
if check_id(check):
print(f"✅ ID {check} found!")
else:
print(f"❌ ID {check} not found.")
3. 确保 data.json 格式正确(UTF-8 编码):
[
{
"ID": 0,
"login": "admin",
"password": "123",
"email": "[email protected]"
},
{
"ID": 1,
"login": "admin2",
"password": "1234",
"email": "[email protected]"
}
]
⚠️ 注意事项
-
编码安全:显式指定
encoding="utf-8"防止中文或特殊字符读取异常; - 异常防护:涵盖文件缺失、JSON 解析失败、非列表结构等常见错误;
-
性能优化:使用
any()+ 生成器表达式,查到即返回,无需遍历全部; -
字段健壮性:
item.get("ID")比item["ID"]更安全,避免缺失键导致崩溃; -
跨项目使用:若
data.json不在当前目录,请传入完整路径或使用pathlib构建可靠路径。
该方案简洁、可维护、易测试,是处理静态 JSON 查询任务的标准实践。










