logo
51

JSON 处理

⏱️ 25分钟

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 分钟)

  1. 把 dict 转 JSON 字符串再转回。
  2. 写入 users.json 并读取。
  3. 过滤成年用户输出。

课堂小测参考答案与判分点

  • 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
  • 判分点 1(正确性):主流程结果正确,关键分支可执行。
  • 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
  • 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。

迁移任务(课后)

写一个“本地配置加载器”:读取 JSON 配置,提供默认值兜底。

本节验收标准

你能独立做到:

  • 区分四个 API:dump/dumps/load/loads
  • 完成 JSON 文件读写
  • 处理解析失败场景

常见报错与调试步骤(新手版)

  • 报错看不懂:先读最后一行错误类型(如 TypeErrorNameError),再回到对应代码行定位。
  • 不确定变量值:在关键位置临时 print(变量, type(变量)),先确认数据是否符合预期。
  • 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。

常见误区

  • 误区:JSON 可使用单引号。
  • 正解:JSON 标准要求双引号。