Python序列化模块JSON与Pickle
序列化是将数据结构或对象转换为序列化的格式,以便它可以存储或传输。Python提供了两个标准序列化模块,即JSON和Pickle。JSON模块序列化的结果是字符串,它适用于网络传输,而Pickle模块序列化的结果是二进制,它适用于本地存储。
JSON模块
JSON是一种轻量级数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。
JSON序列化模块提供了四个功能:dumps、dump、loads、load。其中,dumps接受一个Python对象并将其转换为JSON字符串,dump也接受一个Python对象,然后将其转换为JSON格式,并存储在文件对象中。loads接受一个JSON格式的字符串并返回一个Python对象,load也是类似的功能,只是从文件对象中读取JSON格式的数据。
示例1
import json
person = {
'name': 'Tom',
'age': 20,
'isMarried': False,
'hobbies': ['swimming', 'reading']
}
# 将python对象person序列化为JSON字符串
json_str = json.dumps(person, indent=4)
print(json_str)
示例2
import json
person = {
'name': 'Tom',
'age': 20,
'isMarried': False,
'hobbies': ['swimming', 'reading']
}
# 将python对象person序列化为JSON格式并将其写入文件中
with open('person.json', 'w') as f:
json.dump(person, f)
# 从文件中读取JSON数据并反序列化为python对象
with open('person.json', 'r') as f:
data = json.load(f)
print(data['name'])
print(data['age'])
print(data['hobbies'])
Pickle模块
Pickle是Python的一个序列化模块,它将Python对象序列化为二进制格式,并在需要时将其反序列化回来。相对于JSON序列化模块,Pickle能够处理更多的Python对象类型,但其序列化后的数据无法被其他语言解析。
Pickle序列化模块提供了四个功能:dumps、dump、loads、load,和JSON序列化模块的用法非常相似。
示例1
import pickle
person = {
'name': 'Tom',
'age': 20,
'isMarried': False,
'hobbies': ['swimming', 'reading']
}
# 将python对象person序列化为二进制数据
binary_data = pickle.dumps(person)
print(binary_data)
# 将二进制数据反序列化为python对象
data = pickle.loads(binary_data)
print(data['name'])
print(data['age'])
print(data['hobbies'])
示例2
import pickle
person = {
'name': 'Tom',
'age': 20,
'isMarried': False,
'hobbies': ['swimming', 'reading']
}
# 将python对象person序列化为二进制格式并将其写入文件中
with open('person.pickle', 'wb') as f:
pickle.dump(person, f)
# 从文件中读取二进制数据并反序列化为python对象
with open('person.pickle', 'rb') as f:
data = pickle.load(f)
print(data['name'])
print(data['age'])
print(data['hobbies'])
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python序列化模块JSON与Pickle - Python技术站