Python 使用 json 模块存储与读取数据

JSON是一种轻量级数据交换格式,Python通过json模块实现对象与字符串互转;使用json.dump()可将字典、列表等写入文件,配合ensure_ascii=False和indent=4支持中文及格式美化;用json.load()从文件读取并还原为Python对象;仅支持基本类型,datetime等需转字符串处理。

在 Python 中,json 模块是处理 JSON 格式数据的标准工具,常用于将数据保存到文件或从文件中读取。它适合存储配置信息、程序状态或结构化数据,使用简单且兼容性好。

什么是 JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。Python 的 json 模块可以将 Python 对象(如字典、列表)转换为 JSON 字符串,也可以将 JSON 字符串还原为 Python 对象。

使用 json.dump() 写入数据到文件

当你想把数据保存到本地文件时,使用 json.dump() 函数。它会将 Python 对象直接写入文件。

示例:保存用户信息到 users.json

import json

data = { "users": [ {"name": "Alice", "age": 28, "city": "Beijing"}, {"name": "Bob", "age": 32, "city": "Shanghai"} ] }

with open("users.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4)

参数说明:
- ensure_ascii=False:支持中文等非 ASCII 字符输出
- indent=4:美化输出,使用 4 个空格缩进,便于阅读

使用 json.load() 从文件读取数据

使用 json.load() 可以从 JSON 文件中读取内容并还原为 Python 数据结构。

示例:读取 users.json 文件

import json

with open("users.json", "r", encoding="utf-8") as f: data = json.load(f)

print(data["users"][0]["name"]) # 输出: Alice

读取后,data 是一个字典,可以直接像操作普通 Python 对象一样访问其内容。

处理复杂数据类型注意事项

json 模块只支持基本的 Python 类型:
- 字典 → 对象
- 列表 → 数组
- 字符串、数字、布尔值、None → 对应 JSON 类型

不支持的数据类型如 datetime、自定义类实例等需要额外处理。
例如,datetime 需要先转为字符串:

from datetime import datetime
import json

data = { "log": "系统启动", "time": datetime.now().isoformat() }

with open("log.json", "w") as f: json.dump(data, f, indent=2)

基本上就这些。只要数据是字典或列表组成的结构,用 json 模块存取就很方便。注意编码和格式化选项,能避免多数常见问题。