python中元组、字典、列表的序列化与反序列化
在python中,序列化是指把Python的对象编码转化为JSON格式的字符串;反序列化则是相反,是把JSON格式的字符串解码为Python数据对象。其中专门提供了JSON库来处理这个过程。
⼀、JSON库的应⽤
把内置数据结构如元组、字典、列表进⾏序列化处理后,类型为str(字符串),⽽经过反序列化处理后,数据结构依然是列表和字典(元组经过序列化和反序列化后数据类型为字典,不再是元组)。在JSON库中,序列化和反序列化的处理是分为两部分的,⼀部分是对具体列表数据的处理,另⼀部分是对⽂件内容的处理。
1、转化实例代码如下:
# -*- coding: utf-8 -*-
# python3.6
import json
# 列表
list1 = [1,2,3,4,5]
print(list1)
print("对列表进⾏序列化和反序列化的处理:")
print("列表未进⾏序列化之前的数据类型为:",type(list1))
# 对列表进⾏序列化处理
list_str = json.dumps(list1)
print("列表序列化后的内容为:{0},类型为:{1}".format(list_str,type(list_str)))
# 对字符串list_str进⾏反序列化
str_list = json.loads(list_str)
print("字符串反序列化后的内容为:{0},类型为:{1}".format(str_list,type(str_list)))
# 元组
tuple1 = ('name','huzi','age')
print(tuple1)
print("对元组进⾏序列化和反序列化的处理:")
print("元组未序列化之前的数据类型为:",type(tuple1))
# 对元组tuple1进⾏序列化处理
tuple_str = json.dumps(tuple1)
print("元组tuple1序列化后的内容为:{0},类型为:{1}".format(tuple_str,type(tuple_str)))
# 对字符串tuple_str反序列化的处理
str_tuple = json.loads(tuple_str)
print("字符串tuple_str反序列化后的内容为:{0},类型为:{1}".format(str_tuple,type(str_tuple)))
# 字典
dict1 = {'name':'huzi','age':'22'}
print(dict1)
print("对字典进⾏序列化与反序列化的处理")
print("字典未序列化之前的数据类型为:",type(dict1))
# 对字典dict1进⾏序列化处理
dict_str = json.dumps(dict1)
print("字典dict1序列化后的内容为:{0},类型为:{1}".format(dict_str,type(dict_str)))
# 对字符串dict_str进⾏反序列化处理
str_dict = json.loads(dict_str)
print("字符串dict_str序列化后的内容为:{0},类型为:{1}".format(str_dict,type(str_dict)))
打印结果如下:
2、实例应⽤代码如下:
在实际服务端与客户端的数据交互中,客户端发送请求到服务端,服务端响应回复数据给客户端,客户端拿到响应数据后就把这些数据存储在⽂件中了,然后后续再继续对⽂件的数据进⾏处理,在处理的
过程中需要进⾏序列化与反序列化处理,⽽序列化的过程实际上是把数据存储在⽂件中的过程,反序列化的过程是读取⽂件⾥边的内容的过程。记录⼀个例⼦,例⼦内容为把服务端返回的数据存储在⽂件中,然后再读取⽂件的内容
"""
请求接⼝为 **9.*7.**.**3:8000/login ,
把服务端返回的响应数据存储在⽂件中,然后对⽂件反序列化处理获取⾥⾯的具体的值
"""
import requestspython json字符串转数组
import json
def login():
headers = {
'Content-Type': 'application/json'}
data = {"userName":"11111111112","password":"123456"}
response = requests.post(
url = '**9.*7.**.**3:8000/login',
json = data,
headers = headers
)
versionInfo =
print("返回的参数未序列化之前的数据类型为:{0},内容为 {1}".format(type(versionInfo),versionInfo)) # 把服务端返回的响应数据序列化并存储在⽂件中
json.dump(response.json(),open('json.md','w'))
login()
# 对⽂件进⾏反序列化处理,取值message对应的value具体值
dict1 = json.load(open('json.md','r'))
print("⽂件数据反序列化后的类型为:{0},内容为:{1}".format(type(dict1),dict1))
print("message对应的value的值为:{0}".format(dict1['message']))
打印结果为:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论