首页 代码 正文

Python实现序列化与反序列化

2024.12.12 代码 466

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

Python实现序列化与反序列化 代码-第1张

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

  1. 转载请保留原文链接:Python实现序列化与反序列化 https://aboss.top/post/909/
  2. 本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
  3. 本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
  4. 本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
  5. 联系方式(#替换成@):mail#aboss.top

评论

热门搜索