Python中数据的序列化与反序列化(JSON库的应用)
参考书籍《Python自动化测试实战》无涯著
Pyton中序列化指的是将Python中的数据结构(列表、元组、字典)编码转换为JSON格式的字符串;而反序列化指的是将JSON格式的字符串编码转换为Python中的数据结构(列表、元组、字典);
注意:元组经过序列化处理后,再通过反序列化处理后,数据类型不再是元组(而是列表);但列表、字典经过序列化处理后,再通过反序列化处理后,数据类型不变;
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
File Name: json_e.py
Time : 2019/7/14 16:55
IDE :PyCharm
Author :Administrator
"""
import json
print('\n对列表进行序列化与反序列化处理:')
list1 = [1, 2, 3, 4, 5]
print('列表未序列化时的数据类型:{}'.format(type(list1)))
# 对列表list1进行序列化处理
list2str = json.dumps(list1)
print('列表list1序列化后的内容是{0}\n其类型{1}'.format(list2str, type(list2str)))
# 对字符串list2str进行反序列化处理
str2list = json.loads(list2str)
print('字符串list2str反序列化后的内容是{0}\n其类型{1}'.format(str2list, type(str2list)))
print('\n对元组进行序列化与反序列化处理:')
tuple1 = ('name', 'danxia', 'age', 18)
print('元组未序列化时的数据类型:{}'.format(type(tuple1)))
# 对元组tuple1进行序列化处理
tuple2str = json.dumps(tuple1)
print('元组tuple1序列化后的内容是{0}\n其类型{1}'.format(tuple2str, type(tuple2str)))
# 对字符串tuple2str进行反序列化处理
str2tuple = json.loads(tuple2str)
print('字符串tuple2str反序列化后的内容是{0}\n其类型{1}'.format(str2tuple, type(str2tuple)))
print('\n对字典进行序列化与反序列化处理:')
dict1 = {'name': 'danxia', 'age': 18}
print('字典未序列化时的数据类型:{}'.format(type(dict1)))
# 对字典dict1进行序列化处理
dict2str = json.dumps(dict1)
print('字典dict1序列化后的内容是{0}\n其类型{1}'.format(dict2str, type(dict2str)))
# 对字符串dict2str进行反序列化处理
str2dict = json.loads(dict2str)
print('字符串dict2str反序列化后的内容是{0}\n其类型{1}'.format(str2dict, type(str2dict)))
执行结果:
对列表进行序列化与反序列化处理:
列表未序列化时的数据类型:<class 'list'>
列表list1序列化后的内容是[1, 2, 3, 4, 5]
其类型<class 'str'>
字符串list2str反序列化后的内容是[1, 2, 3, 4, 5]
其类型<class 'list'>
对元组进行序列化与反序列化处理:
元组未序列化时的数据类型:<class 'tuple'>
元组tuple1序列化后的内容是["name", "danxia", "age", 18]
其类型<class 'str'>
字符串tuple2str反序列化后的内容是['name', 'danxia', 'age', 18]
其类型<class 'list'>
对字典进行序列化与反序列化处理:
字典未序列化时的数据类型:<class 'dict'>
字典dict1序列化后的内容是{"name": "danxia", "age": 18}
其类型<class 'str'>
字符串dict2str反序列化后的内容是{'name': 'danxia', 'age': 18}
其类型<class 'dict'>