Python序列化详解:JSON与Pickle的使用对比

小石头
小石头
发布时间:2026-10-13| 5人浏览过
原创

本文介绍Python中的序列化概念,重点对比JSON与Pickle两种常用序列化方式。JSON适用于跨语言数据交换,轻量且通用;Pickle专用于Python对象持久化,支持所有Python数据类型。文章提供具体代码示例,展示dumps/dump与loads/load方法的使用,帮助开发者理解不同场景下的最佳实践。

将对象(变量)从内存状态转换为可存储格式的过程被称为序列化。在XML等格式中,这一过程在Python里称为pickling,而在其他编程语言中通常被称为serialization、marshalling或flattening,这些术语表达的是同一个概念。

序列化后的内容可以写入磁盘,或者通过网络传输至其他服务器。反之,将序列化的对象重新读取到内存中,恢复为原始变量的过程称为反序列化,即unpickling。

JSON(JavaScript Object Notation)

JSON是一种轻量级的数据交换格式,基于ECMAScript的子集。它采用完全独立于编程语言的文本格式,但遵循类似C语言家族(包括C、C++、Java、JavaScript、Perl、Python等)的习惯。这些特性使JSON成为理想的数据交换语言,既易于人类阅读和编写,也便于机器解析和生成,通常用于提升网络传输效率。

若需在不同编程语言间传递对象,必须将其序列化为标准格式。虽然XML是一种选择,但更推荐JSON,因为JSON表现为字符串,可被所有语言读取,并能方便地存储到磁盘或通过网络传输。JSON不仅是标准格式,且比XML处理速度更快,还能直接在Web页面中读取,使用便捷。JSON所表示的对象即为标准的JavaScript语言对象。

具体使用方法如下:

import json
# 序列化写(json.dumps())
with open('test.txt', 'w') as f:
  f.write(json.dumps(dic))
# 序列化读(json.loads)
with open('test.txt', 'r') as f:
  print(json.loads(f.read()))

import json
dic = {'name': 'fanjinbao'}
# 序列化写(json.dump())
with open('test.txt', 'w') as f:
  json.dump(dic, f)
# 序列化读(json.load())
with open('test.txt', 'r') as f:
  print(json.load(f))

Pickle模块

Python的pickle模块实现了所有Python数据的序列化和反序列化功能。其功能与JSON模块相似,方法同样包括dumps/dump和loads/load。cPickle是pickle模块的C语言编译版本,运行速度相对更快。与JSON不同,Pickle不用于跨语言数据传输,而是专门作为Python对象的持久化存储或Python程序间对象传输的手段,因此它支持Python的所有数据类型。

经过Pickle反序列化得到的对象是与原对象等值的副本,其效果类似于deepcopy操作。

具体使用方法如下:

import pickle
dic = {'name': 'fanjinbao'}
# 序列化写(pickle.dump())
with open('test.txt', 'wb') as f:
  f.write(pickle.dumps(dic))
# 序列化读(pickle.loads())
with open('test.txt', 'rb') as f:
  print(pickle.loads(f.read()))

import pickle
dic = {'name': 'fanjinbao'}
# 序列化写(pickle.dump())
with open('test.txt', 'wb') as f:
  pickle.dump(dic, f)
# 序列化读(pickle.load())
with open('test.txt', 'rb') as f:
  print(pickle.load(f))

以上内容为本文的全部介绍,希望对各位的学习有所帮助,也欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。