Python对象序列化教程_pickle与json对比

落涛小哥_4630

落涛小哥_4630

2026-01-06

517人浏览

原创

python中对象序列化应根据场景选择:仅python内部使用且需保留对象类型和行为时选pickle,跨语言交互或需可读性时选json;pickle支持任意python对象但不安全,json仅支持基础类型且需手动处理datetime等。

python对象序列化教程_pickle与json对比

Python中对象序列化主要用picklejson,二者用途不同:pickle用于Python内部数据持久化(支持任意Python对象),json用于跨语言数据交换(只支持基础数据类型)。

什么时候该用pickle

pickle能序列化函数、类实例、嵌套自定义对象等,适合Python程序内部保存状态或缓存。

  • 保存训练好的scikit-learn模型、PyTorch模型参数等
  • 临时缓存复杂计算结果(如带方法的类实例)
  • 进程间传递Python对象(配合multiprocessing)

注意:pickle文件不安全,不能加载不可信来源的数据,否则可能执行任意代码。

什么时候该用json

json生成的是纯文本、人类可读、所有主流语言都支持的格式,适合API通信、配置文件、日志记录。

Pandas 配置文件报告生成器
Pandas 配置文件报告生成器

使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。

下载
  • Web接口返回数据(如Flask/FastAPI的响应体)
  • 保存用户配置(字符串、数字、布尔、列表、字典、None)
  • 前端与后端之间传输结构化数据

限制:不能直接序列化datetime、set、自定义类等;需手动转换(例如把datetime转为ISO字符串)。

关键操作对比

以下是最常用写法对比:

  • pickle.dump(obj, file) —— 写入二进制文件;pickle.load(file) —— 从文件读取
  • json.dump(obj, file) —— 写入文本文件(需open时指定encoding='utf-8');json.load(file) —— 从文件读取
  • pickle.dumps(obj) → bytes;json.dumps(obj) → str(默认不带编码)
  • json支持default=参数处理不支持类型,例如:json.dumps(obj, default=str) 把无法序列化的对象转成字符串表示

选型建议

按需求判断:

  • 只在Python里用,要保留对象类型和行为 → 选pickle
  • 要和JavaScript/Java/Go等交互,或需要可读性、可编辑性 → 选json
  • 数据含中文?json默认支持UTF-8,pickle也支持但需确保文件以二进制模式打开
  • 性能敏感?pickle通常更快更紧凑,尤其对大型嵌套结构;json解析慢一点但更安全稳定

不复杂但容易忽略:json不支持tuple(会变成list),而pickle保留tuple类型;若业务逻辑依赖tuple不可变性,这点会影响行为。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
flask框架如何搭建
flask框架如何搭建

搭建步骤:1、安装Python和Pip;2、创建虚拟环境;3、安装Flask;4、创建Flask应用;5、运行应用;6、访问应用。想了解更多flask框架的相关内容,可以阅读本专题下面的文章。

2024.06.27

2815

8

Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

2025.08.25

4164

10

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

2025.12.15

256

16

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

1935

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2542

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

896

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

2839

7

Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API

Python FastAPI 异步开发利用 async/await 关键字,通过定义异步视图函数、使用异步数据库库 (如 databases)、异步 HTTP 客户端 (如 httpx),并结合后台任务队列(如 Celery)和异步依赖项,实现高效的 I/O 密集型 API,显著提升吞吐量和响应速度,尤其适用于处理数据库查询、网络请求等耗时操作,无需阻塞主线程。

2025.12.22

99

5

Python 微服务架构与 FastAPI 框架
Python 微服务架构与 FastAPI 框架

本专题系统讲解 Python 微服务架构设计与 FastAPI 框架应用,涵盖 FastAPI 的快速开发、路由与依赖注入、数据模型验证、API 文档自动生成、OAuth2 与 JWT 身份验证、异步支持、部署与扩展等。通过实际案例,帮助学习者掌握 使用 FastAPI 构建高效、可扩展的微服务应用,提高服务响应速度与系统可维护性。

2026.02.06

494

18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 11.9万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.5万人学习