贝利信息

Python对象序列化_pickle与json说明【指导】

日期:2026-01-05 00:00 / 作者:冰川箭仙
应根据数据来源和使用方选择:Python内部暂存用pickle,跨语言或外部输入用json;pickle不安全,json需预处理类型。

Python中对象序列化主要用 _pickle(通常简写为 pickle)和 json,二者用途不同、限制不同、安全性也不同。选错方式可能导致数据无法读取、程序崩溃,甚至远程代码执行风险。

pickle 适合 Python 内部数据交换

pickle 是 Python 原生序列化模块,能完整保存任意 Python 对象(如函数、类实例、嵌套对象等),反序列化时可恢复原始类型和行为。

json 适合跨语言、结构化数据交换

json 是通用文本格式,只支持基础数据类型:字典、列表、字符串、数字、布尔值和 None。它不能直接保存 Python 特有对象(如 datetimeset、自定义类实例)。

常见误用与绕过技巧

遇到“Object of type X is not JSON serializable”错误,不是该换 pickle,而是该适配 json。

什么时候该选哪个?

看数据来源和使用方: