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'>
相關文章
相關標籤/搜索