JSON 处理笔记
🧠 JSON 处理笔记(Python)
一、什么是 JSON?
JSON(JavaScript Object Notation) 是一种轻量级的数据格式,广泛用于:
- 网络数据通信(前后端接口)
- 配置文件(如
.json文件) - 数据存储(如数据库字段)
它和 Python 的 dict/list 数据结构非常相似。
二、Python 中处理 JSON 的标准库
Python 提供了内置模块:json,无需安装即可使用。
python复制编辑
import json
三、常用方法汇总(🔥重点)
| 功能 | 方法 | 示例 |
|---|---|---|
| Python 对象 ➜ JSON 字符串 | json.dumps(obj) | 序列化为字符串 |
| JSON 字符串 ➜ Python 对象 | json.loads(s) | 反序列化为 dict 或 list |
| Python 对象 ➜ 直接写入 JSON 文件 | json.dump(obj, file) | 推荐用于保存 JSON 文件 |
| JSON 文件 ➜ 读取成 Python 对象 | json.load(file) | 读取本地 JSON 文件并转为对象 |
四、参数详解(常用)
✅ json.dumps() / json.dump() 常用参数:
| 参数名 | 作用 | 示例 |
|---|---|---|
ensure_ascii=False | 保证中文不被转义成 \uXXXX | 正确保存中文 |
indent=2 | 缩进美化,生成带换行的 JSON | 便于阅读 |
separators=(',', ': ') | 控制键值之间的空格 | 精简或格式化 |
五、刚才的处理过程详解
🧩 原始问题
你有一个字符串形式的 JSON(比如从网页提取):
python复制编辑
json_str = '{\n "中华人民共和国劳动法 第一条": "……", ... }'
✅ 步骤 1:反序列化字符串成 dict
python复制编辑
article_dict = json.loads(json_str)
json.loads()把 JSON 格式的字符串转成 Python 的字典对象。- 此时你可以用
article_dict['中华人民共和国劳动法 第一条']正常取值。
✅ 步骤 2:为了生成 JSON 数组形式的结构,加一个列表封装
python复制编辑
article_list = [article_dict]
变成:
python复制编辑[{"中华人民共和国劳动法 第一条": "……"}
]
✅ 步骤 3:写入 JSON 文件(自动换行、支持中文)
python复制编辑with open(save_path, "w", encoding="utf-8") as f:json.dump(article_list, f, ensure_ascii=False, indent=2)
json.dump():直接将 Python 对象写入文件。ensure_ascii=False:避免中文被转成 Unicode(\u4e2d\u56fd...)indent=2:加缩进,自动换行,美化结构
六、额外:文件读写常见操作
1. 读取 .json 文件
python复制编辑with open("data.json", "r", encoding="utf-8") as f:data = json.load(f)
2. 写入 .json 文件(推荐)
python复制编辑with open("output.json", "w", encoding="utf-8") as f:json.dump(data, f, ensure_ascii=False, indent=2)
七、常见错误提醒 ⚠️
| 错误 | 原因 | 解决 |
|---|---|---|
TypeError: Object of type X is not JSON serializable | 你试图写入的数据中包含不支持的类型,如 datetime、set 等 | 转成字符串或基本类型 |
json.decoder.JSONDecodeError | 字符串不是合法 JSON 格式(可能用单引号或漏了逗号) | 检查 JSON 字符串结构 |
✅ 总结一句话:
在 Python 中,用
json.loads()把 JSON 字符串变成对象,用json.dumps()或json.dump()把对象变成 JSON 字符串或文件,配合ensure_ascii=False和indent=2可以完美处理中文与格式化。
