Python--序列化和反序列化

通过文件操作,可将字符串写入到一个本地文件,但是无法将一个对象,如字典,列表,元组直接写入到一个文件里,这是就需要将这个对象进行序列化,然后写入文件。

设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字节序列恢复到内存中,就是反序列化。

序列化: 将对象转换为字节序列。

反序列化:将字节序列转换为对象。

JSON模块

Python中JSON模块可用来实现数据的序列化和反序列化。

JSON:Javascript Object Notation ,一种轻量级的数据交换标准。JSON的本质是字符串。

使用JSON实现序列化

JSON提供了dump和dumps方法,将一个对象序列化。把对象转换为字符串,方法本身不具备将数据写入到文件的功能。

dumps( ) 方法测试

测试代码:

import json

names = [‘Jack’, ‘Dennis’, ‘Ritchie’, ‘Mike’, ‘Tony’]

# dumps 传入一个对象,转换为一个JSON字符串

result = json.dumps(names)

print(result)

print(type(result)) # <class ‘str’>

with open(‘json.txt’, ‘w’) as f:

    f.write(result)

列表被写入到文件json.txt
在这里插入图片描述

dump() 方法测试

将对象转换为字符串的同时,指定一个文件对象,把转换后的字符串写入到这个文件

# dump

fp =open(‘json2.txt’, ‘w’)

json.dump(names, fp)

fp.close()

# 或者

with open(‘json3.txt’, ‘w’) as f:

json.dump(names, f)

实现了对象序列化的同时写入文件。

创建文件效果如下:

在这里插入图片描述

json2.txt和json3.txt写入了同样的内容。

JSON实现反序列化

将JSON的字符串变成一个Python对象

# 反序列化 loads( )方法

with open(‘json.txt’, ‘r’) as f:

    content = f.read()

    print(content)

    print(type(content))

输出:

[“Jack”, “Dennis”, “Ritchie”, “Mike”, “Tony”]

<class ‘str’>

可以看到,读取输出的是字符串类型,并不是列表。

with open(‘json.txt’, ‘r’) as f:

    content = f.read()

    result = json.loads(content)

    print(type(result))

输出:

<class ‘list’>

可以看出,使用loads( )方法后将字符串转变为列表对象了。

# load( )方法

测试代码:

with open(‘json.txt’) as f:

    result = json.load(f)

    print(result)

    print(type(result))

输出:

[‘Jack’, ‘Dennis’, ‘Ritchie’, ‘Mike’, ‘Tony’]

<class ‘list’>

直接转换为列表对象了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值