文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python序列化模块JSON与Pickle

2024-04-02 19:55

关注

序列化把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening。

一、JSON序列化

使用json序列化能够达到跨平台传输数据的目的。

跨平台性质,它可以序列化dict/list/str/int/float/bool/None数据类型。

序列化成json文本格式。

1、json数据类型和python数据类型对应关系表:

Json类型<——>Python类型

2、相关函数

(2)序列化

(2)反序列化

3、举例:

import json

struct_data = {'name': 'json', 'age': 23, 'sex': 'male'}
print(struct_data, type(struct_data))  # {'name': 'json', 'age': 23, 'sex': 'male'} 
# 序列化
data = json.dumps(struct_data)
print(data, type(data))  # {"name": "json", "age": 23, "sex": "male"} 

# 反序列化
data = json.loads(data)
print(data, type(data))  # {'name': 'json', 'age': 23, 'sex': 'male'}

磁盘文件操作

import json

# 序列化,写入磁盘
with open('Json序列化对象.json', 'w') as fw:
    json.dump(struct_data, fw)

# 从文件读取,反序列化
with open('Json序列化对象.json') as fr:
    data = json.load(fr)
print(data)  # {'name': 'json', 'age': 23, 'sex': 'male'}

二、Pickle序列化

pickle无法跨平台,序列化之后只有python识别。但是可以序列化Python的任意数据类型,包括函数和对象。

Json模块和picle模块都有 dumps、dump、loads、load四种方法,而且用法一样。但是序列化成二进制形式。

1、举例:

import pickle

struct_data = {'name': 'json', 'age': 23, 'sex': 'male'}
print(struct_data, type(struct_data))  # {'name': 'json', 'age': 23, 'sex': 'male'} 

data = pickle.dumps(struct_data)
print(data, type( data))  # b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00jsonq\x02X\x03\x00\x00\x00ageq\x03K\x17X\x03\x00\x00\x00sexq\x04X\x04\x00\x00\x00maleq\x05u.' 

data = pickle.loads(data)
print(data, type(data))  # {'name': 'json', 'age': 23, 'sex': 'male'} 'dict'>

# 序列化(注意:pickle模块需要使用二进制存储,即'wb'模式存储)
with open('Pickle序列化对象.pkl', 'wb') as fw:
    pickle.dump(struct_data, fw)

# 反序列化
with open('Pickle序列化对象.pkl', 'rb') as fr:
    pickle = pickle.load(fr)
print(data)  # {'name': 'json', 'age': 23, 'sex': 'male'}

2、base64与pickle联合使用

str = 'Hello World'  # 加密前,原始数据
a = base64.b64encode(pickle.dumps(str)).decode()  # 加密
print(a) # gANYCwAAAEhlbGxvIFdvcmxkcQAu
b = pickle.loads(base64.b64decode(a.encode()))  # 解密
print(b)

到此这篇关于Python序列化模块JSON与Pickle的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯