便宜VPS主机精选
提供服务器主机评测信息

python序列化和反序列化详解

序列化:把python的数据类型转换成json格式的字符串类型。反序列化:把json格式的字符类型串转换成python的数据类型。

代码演示:

# -- coding: utf-8 --
# @author : 软测小栈
# @file : 15序列化与反序列化.py
# @software: pycharm

"""
概念:
序列化:把python的数据类型转换成json格式的字符串类型。
反序列化:把json格式的字符类型串转换成python的数据类型。
使用场景:在接口测试过程中,数据传输时,发送请求时通常使用的时json格式的字符串,还有在断言字段时,
需要先将返回的内容反序列化为python的数据类型,如列表、字典等,然后在进行取值,如 assert result['code'] =='200'
result[0]="请求成功"等等
"""
import json
import requests

d = {"a": 1, "b": 2}
print("初始数据:", d, type(d)) #初始数据: {'a': 1, 'b': 2} <class 'dict'>

json1 = json.dumps(d)  # 序列化操作   字典转转json格式的字符串
print("序列化之后的数据:", json1, type(json1)) # 序列化之后的数据: {"a": 1, "b": 2} <class 'str'>
d2 = json.loads(json1)  # 反序列化操作  json格式的字符串转字典
print("反序列化之后的数据:", d2, type(d2)) #反序列化之后的数据: {'a': 1, 'b': 2} <class 'dict'>

params = '{"apiKey": "软测小栈", "keyWord": "蛇"}'
result = requests.get(url="https://api.apishop.net/common/chengyu/searchChengyu",
                      params='{"apiKey": "软测小栈", "keyWord": "蛇"}')

print(result.text)
print(type(result))  # <class 'requests.models.Response'>
print(type(result.json()))  # dict
print(result.json()['statusCode'])
print(result.json()['desc'])
print(result.json()['result'])
print("=======================================")
data = {"apiKey": "111111", "phoneNum": "13000000000"}
print(type(data)) # 字典类型
result1 = requests.post(url="https://api.apishop.net/common/chengyu/searchChengyu",
                        json=json.dumps(data))
result2 = requests.post(url="https://api.apishop.net/common/chengyu/searchChengyu",
                        data='apiKey=111111&phoneNum=13000000000')
"""
可以参考源码释义【如下截图】:
用data参数提交数据时,request.body的内容则为a=1&b=2的这种形式,
用json参数提交数据时,request.body的内容则为'{"a": 1, "b": 2}'的这种形式。
"""
print(result1.text)
print(result2.text)
v2-f5dd0efef1d720b8456b49d38ef1b064_1440w.webp
未经允许不得转载:便宜VPS测评 » python序列化和反序列化详解