51
JSON 处理
JSON 处理:文本格式与 Python 对象互转
你现在可能会困惑什么
“dict 和 JSON 看起来一样,有区别吗?”
有。dict 是内存对象,JSON 是跨语言文本格式。
一句话定义
loads/dumps 处理字符串,load/dump 处理文件。
生活类比
dict 像你脑中的结构,JSON 像可邮寄的标准表单。
最小可运行例子
import json
user = {"name": "Alice", "age": 25}
text = json.dumps(user, ensure_ascii=False)
print(text)
obj = json.loads(text)
print(obj["name"])
文件读写
with open("user.json", "w", encoding="utf-8") as f:
json.dump(user, f, ensure_ascii=False, indent=2)
with open("user.json", "r", encoding="utf-8") as f:
data = json.load(f)
课堂小测(5 分钟)
- 把 dict 转 JSON 字符串再转回。
- 写入
users.json并读取。 - 过滤成年用户输出。
课堂小测参考答案与判分点
- 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
- 判分点 1(正确性):主流程结果正确,关键分支可执行。
- 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
- 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。
迁移任务(课后)
写一个“本地配置加载器”:读取 JSON 配置,提供默认值兜底。
本节验收标准
你能独立做到:
- 区分四个 API:
dump/dumps/load/loads - 完成 JSON 文件读写
- 处理解析失败场景
常见报错与调试步骤(新手版)
- 报错看不懂:先读最后一行错误类型(如
TypeError、NameError),再回到对应代码行定位。 - 不确定变量值:在关键位置临时
print(变量, type(变量)),先确认数据是否符合预期。 - 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。
常见误区
- 误区:JSON 可使用单引号。
- 正解:JSON 标准要求双引号。