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
可以完美处理中文与格式化。