Python处理JSON最常用的是内置json模块,提供loads()将JSON字符串转为Python对象、dumps()将Python对象转为JSON字符串、load()/dump()直接读写文件,支持中文显示、缩进格式及自定义类型序列化。

Python 中处理 JSON 数据最常用、最直接的方式就是使用内置的 json 模块。它轻量、稳定、无需额外安装,能高效完成字符串与 Python 对象之间的双向转换。
json.loads():把 JSON 字符串转成 Python 对象
当你从网络请求(如 requests.get().text)、文件读取或 API 返回中拿到一段 JSON 格式的字符串时,用 loads() 就能把它变成字典、列表等原生 Python 类型。
- 字符串必须是合法 JSON 格式,比如键名和字符串值都要用双引号,不能用单引号
- 遇到非法格式会抛出
json.JSONDecodeError,建议加 try-except 处理 - 示例:json.loads('{"name": "Alice", "age": 25}') → 返回 {'name': 'Alice', 'age': 25}
json.dumps():把 Python 对象转成 JSON 字符串
适合将字典、列表等结构序列化为标准 JSON 字符串,用于发送 HTTP 请求、保存到文件或日志记录。
- 默认不带缩进,可传
indent=2让输出更易读 - 中文默认会被转义(如
\u4f60\u597d),加参数ensure_ascii=False可保留原始中文 - 支持
sort_keys=True按键字母排序,方便比对或调试
读写 JSON 文件:用 load() 和 dump()
和字符串版本的区别在于:它们直接操作文件对象,省去手动调用 .read() 或 .write() 的步骤。
立即学习“Python免费学习笔记(深入)”;
-
json.load(f):从已打开的文件对象中读取并解析 JSON -
json.dump(obj, f):把 Python 对象写入已打开的文件对象 - 注意文件要以
'r'或'w'模式打开,写入时推荐加encoding='utf-8'
处理特殊类型:自定义编码与解码逻辑
json 模块默认只支持 int/float/str/list/dict/None/bool 这几种类型。遇到 datetime、Decimal、自定义类等,需扩展处理:
- 用
default参数告诉dumps()遇到未知类型怎么转(例如把 datetime 转成 ISO 格式字符串) - 用
object_hook参数让loads()在解析完字典后自动做二次处理(例如把特定字段转成 datetime 对象) - 简单场景下,先用
vars()或__dict__提取属性再序列化,反向则用类构造器重建实例










