Requests接口测试(四)

Python序列化和反序列化python

啥是序列化?啥是反序列化?这两个词听起来优势高大上的意思,其实呢否则,很简单的能够理解为:json

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

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

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

咱们经过上面的例子能够知道json库里面经常使用的方法有spa

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

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

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

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}

而后咱们在将序列化后获得的结果反序列化操做:blog

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)

输出结果:ci

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'>
相关文章
相关标签/搜索