码迷,mamicode.com
首页 > 编程语言 > 详细

接口测试基础三-Python序列化和反序列化

时间:2018-02-19 19:40:11      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:add   数据   alt   哪些   ini   序列   字符   item   https   

啥是序列化?啥是反序列化?这两个词听起来优点高大上的意思,其实呢不然,很简单的可以理解为:

  • 序列化:将python的数据对象编码转换为json格式的字符串
  • 反序列化:将json格式的字符串解码为python的数据对象

在python中提供了json库,我们将json导入,查看json库下面有哪些方法:

技术分享图片

>>> import json
>>> print (json.__all__)
[dump, dumps, load, loads, JSONDecoder, JSONEncoder]
>>>

我们通过上面的例子可以知道json库里面常用的方法有

[dump, dumps, load, loads, JSONDecoder, JSONEncoder]

有的小伙伴可能不知道什么是json这里有个传送门去了解下哈:https://baike.baidu.com/item/JSON/2462549?fr=aladdin

ok,那么我们接下来进行序列化的代码演示,通过json进行序列化json格式字符串,请看下面的代码:

import json

dict1={name:"fighter",
      age:28,
      address:shenzhen}

print (未序列化前的数据类型为:,type(dict1))
print (未序列化前的数据:,dict1)
str1 = json.dumps(dict1)   #将python数据对象序列化操作变成字符串
print (序列化后的数据类型为:,type(str1))
print (序列化后的数据为:,str1)

输出结果:

C:\Python34\python3.exe E:/Project_case/demo1.py
未序列化前的数据类型为: <class dict>                          #-----------字典类型
未序列化前的数据: {address: shenzhen, name: fighter, age: 28} 
序列化后的数据类型为: <class str>                             #-----------字符串类型
序列化后的数据为: {"address": "shenzhen", "name": "fighter", "age": 28}

然后我们在将序列化后得到的结果反序列化操作:

import json  #导入json库

#定义字典
dict1={name:"fighter",
      age:28,
      address:shenzhen}

print (未序列化前的数据类型为:,type(dict1))
print (未序列化前的数据:,dict1)

#对python对象进行序列化操作
print (begin对python对象进行序列化操作------------>)
str1 = json.dumps(dict1)
print (序列化后的数据类型为:,type(str1))
print (序列化后的数据为:,str1)

#对str1进行反序列化操作
print (begin对str1对象进行反序列化操作------------>)
dict2 = json.loads(str1)
print (反序列化后的数据类型:,type(dict2))
print (反序列化后的数据:,dict2)

输出结果:

C:\Python34\python3.exe E:/Project_case/demo1.py
未序列化前的数据类型为: <class dict>
未序列化前的数据: {name: fighter, age: 28, address: shenzhen}
begin对python对象进行序列化操作------------>
序列化后的数据类型为: <class str>
序列化后的数据为: {"name": "fighter", "age": 28, "address": "shenzhen"}
begin对str1对象进行反序列化操作------------>
反序列化后的数据类型: <class dict>
反序列化后的数据: {name: fighter, age: 28, address: shenzhen}

最后,我们在结合requests库,来查看一下json数据,具体代码如下:

import json,requests  #导入json库/requests库

r = requests.get(http://wthrcdn.etouch.cn/weather_mini?city=深圳)
print (r.text,数据类型:,type(r.text))

#对数据进行反序列化操作
dic = json.loads(r.text)
print (dic,数据类型:,type(dic))

查看反序列化前,正常响应结果:

{"data":{"yesterday":{"date":"18日星期日","high":"高温 23℃","fx":"无持续风向","low":"低温 17℃","fl":"<![CDATA[<3级]]>","type":"多云"},"city":"深圳","aqi":"39","forecast":[{"date":"19日星期一","high":"高温 25℃","fengli":"<![CDATA[<3级]]>","low":"低温 18℃","fengxiang":"无持续风向","type":"阵雨"},{"date":"20日星期二","high":"高温 26℃","fengli":"<![CDATA[<3级]]>","low":"低温 17℃","fengxiang":"无持续风向","type":"多云"},{"date":"21日星期三","high":"高温 21℃","fengli":"<![CDATA[3-4级]]>","low":"低温 14℃","fengxiang":"东风","type":"小雨"},{"date":"22日星期四","high":"高温 17℃","fengli":"<![CDATA[3-4级]]>","low":"低温 13℃","fengxiang":"东风","type":"小雨"},{"date":"23日星期五","high":"高温 19℃","fengli":"<![CDATA[<3级]]>","low":"低温 13℃","fengxiang":"无持续风向","type":""}],"ganmao":"天气转凉,空气湿度较大,较易发生感冒,体质较弱的朋友请注意适当防护。","wendu":"23"},"status":1000,"desc":"OK"} 数据类型: <class str>

反序列化后输出的结果:

{status: 1000, desc: OK, data: {forecast: [{date: 19日星期一, high: 高温 25℃, low: 低温 18℃, fengxiang: 无持续风向, type: 阵雨, fengli: <![CDATA[<3级]]>}, {date: 20日星期二, high: 高温 26℃, low: 低温 17℃, fengxiang: 无持续风向, type: 多云, fengli: <![CDATA[<3级]]>}, {date: 21日星期三, high: 高温 21℃, low: 低温 14℃, fengxiang: 东风, type: 小雨, fengli: <![CDATA[3-4级]]>}, {date: 22日星期四, high: 高温 17℃, low: 低温 13℃, fengxiang: 东风, type: 小雨, fengli: <![CDATA[3-4级]]>}, {date: 23日星期五, high: 高温 19℃, low: 低温 13℃, fengxiang: 无持续风向, type: , fengli: <![CDATA[<3级]]>}], ganmao: 天气转凉,空气湿度较大,较易发生感冒,体质较弱的朋友请注意适当防护。, aqi: 39, wendu: 23, yesterday: {date: 18日星期日, high: 高温 23℃, low: 低温 17℃, fl: <![CDATA[<3级]]>, type: 多云, fx: 无持续风向}, city: 深圳}} 数据类型: <class dict>

接口测试基础三-Python序列化和反序列化

标签:add   数据   alt   哪些   ini   序列   字符   item   https   

原文地址:https://www.cnblogs.com/fighter007/p/8454266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!