
本文介绍如何从外部 json 文件中读取数据,并在 python 中编写可复用函数,根据指定 id 值判断某条记录是否存在,支持跨文件调用,适用于配置校验、用户查询等常见场景。
本文介绍如何从外部 json 文件中读取数据,并在 python 中编写可复用函数,根据指定 id 值判断某条记录是否存在,支持跨文件调用,适用于配置校验、用户查询等常见场景。
在实际开发中,常需从 JSON 文件加载结构化数据并按字段(如 "ID")进行查找。以下是一个清晰、健壮且模块化的实现方案。
✅ 核心思路
将 JSON 读取与查找逻辑封装为独立函数 check_id(),置于专用模块(如 fetch_data.py)中,便于主程序导入调用,符合单一职责与高内聚原则。
? 示例代码
1. 创建 fetch_data.py(数据访问模块):
import json
def check_id(check):
"""
在 data.json 中查找是否存在 ID 等于 check 的对象
:param check: 待匹配的 ID 值(int 或 str)
:return: bool,存在返回 True,否则 False
"""
try:
with open("data.json", "r", encoding="utf-8") as file:
data = json.load(file)
# 安全遍历:使用 .get() 避免 KeyError
for item in data:
if item.get("ID") == check:
return True
return False
except FileNotFoundError:
print("❌ 错误:未找到 data.json 文件,请检查路径。")
return False
except json.JSONDecodeError as e:
print(f"❌ JSON 解析错误:{e}")
return False2. 创建 main.py(主调用脚本):
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
from fetch_data import check_id
check = 1 # 可替换为动态输入,例如:check = int(input("请输入要查询的 ID:"))
if check_id(check):
print("✅ ID found!")
else:
print("⚠️ ID not found!")3. 准备 data.json(确保格式合法):
[
{
"ID": 0,
"login": "admin",
"password": "123",
"email": "[email protected]"
},
{
"ID": 1,
"login": "admin2",
"password": "1234",
"email": "[email protected]"
}
]⚠️ 注意:原始问题中 email 字段含 HTML/Cloudflare 邮箱保护代码,实际使用时请替换为纯文本邮箱(如
"[email protected]"),否则可能引发 JSON 解析失败。
? 进阶建议
- 若数据量较大(>1000 条),可考虑预加载并构建 ID 索引字典(
{item["ID"]: item for item in data}),将查找时间复杂度从 O(n) 优化至 O(1); - 如需返回匹配项完整数据,可将函数改为
find_by_id(check) -> dict | None; - 生产环境建议添加日志记录(
logging)和类型校验(如isinstance(check, (int, str)))。
该方案结构清晰、容错性强、易于扩展,是处理 JSON 数据查找任务的标准实践。

















