编辑
2026-04-01
undefined
00

目录

json模块
将Python对象转换为JSON字符串并写入文件
pickle模块

序列化(Serialization)是将数据结构或对象转换为可以存储或传输格式的过程,而反序列化(Deserialization)则是将存储或传输的数据恢复成原始数据结构或对象的过程。在Python中,json和pickle模块提供了两种常用的序列化和反序列化机制,它们各自有不同的用途和特点。

json模块

适用于需要进行数据交换的场景,特别是在Web开发中常用于API数据交换(如RESTful API)。如果需要将数据保存为人类可读格式,或者需要与其他编程语言进行交互,json是更好的选择。 import json

data = {"name": "Alice", "age": 30, "city": "Beijing"} json_data = json.dumps(data, indent=4)  # 将Python对象转换为JSON字符串 print(json_data)

将Python对象转换为JSON字符串并写入文件

with open("data.json", "w") as f: json.dump(data, f, indent=4)

dic = json.loads(json_data)  # 将JSON字符串转换为Python对象 print(dic)

with open("data.json", "r") as f: dic = json.load(f) print(dic)

pickle模块

pickle模块专门用于将Python对象转换为字节流(序列化)并将其保存到磁盘,或者将字节流转换回Python对象(反序列化)。与json模块不同,pickle能够处理Python中几乎所有对象,包括自定义类实例、函数等复杂对象。 import pickle

data = {"name": "Alice", "age": 30, "city": "Beijing"}

byte_data = pickle.dumps(data)  # 将Python对象转换为字节流 print(byte_data)

with open("data.pkl", "wb") as f: pickle.dump(data, f)

dic = pickle.loads(byte_data) print(dic)

with open("data.pkl", "rb") as f: dic = pickle.load(f) print(dic)

总之,json适合跨平台数据交换和保存,而pickle则在处理复杂对象时更为高效。在选择使用哪种模块时,应该根据具体需求而定。如果需要与其他编程语言进行交互,或者希望数据具有可读性,json是更好选择;如果只在Python环境中操作复杂对象,pickle更为合适。

本文作者:a

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!