Python实现序列化与反序列化

156次阅读
没有评论

共计 1081 个字符,预计需要花费 3 分钟才能阅读完成。

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

Python 实现序列化与反序列化

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 更为合适。

正文完
 0
三毛笔记
版权声明:本站原创文章,由 三毛笔记 于2024-12-12发表,共计1081字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)