1. 程式人生 > >Python 接口測試(四)

Python 接口測試(四)

數列 格式 dumps code 輸出 pre weather 標準 lang

五:python數列化和反序列化

python的對象編碼轉換為json格式的字符串,反序列化可以理解為:把json格式

字符串解碼為python數據對象。在python的標準庫中,專門提供了json

導入,查看json庫的主要方法

import  json
print(json.__all__)

見json庫的主要方法:

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

定義一個字典,通過json把它序列化為json格式的字符串,見實現的代碼

技術分享
import  json

dict1={‘name‘:‘leizi‘,‘age‘:24,‘address‘:‘北京‘}

print (u‘未序列化前的數據類型為:‘,type(dict1))
print (u‘未序列化前的數據:‘,dict1)
#對dict1進行序列化的處理
str1=json.dumps(dict1)
print (u‘序列化後的數據類型為:‘,type(str1))
print (u‘序列化後的數據為:‘,str1)
技術分享

結果

未序列化前的數據類型為: <class ‘dict‘>
未序列化前的數據: {‘age‘: 24, ‘name‘: ‘leizi‘, ‘address‘: ‘北京‘}
序列化後的數據類型為: <class ‘str‘>
序列化後的數據為: {"age": 24, "name": "leizi", "address": "\u5317\u4eac"}

我們再反序列化,把json格式的字符串解碼為python的數據對象,見實現的代碼和輸出:

技術分享
import  json

dict1={‘name‘:‘雷子‘,‘age‘:24,‘address‘:‘北京‘}

print (u‘未序列化前的數據類型為:‘,type(dict1))
print (u‘未序列化前的數據:‘,dict1)
#對dict1進行序列化的處理
str1=json.dumps(dict1)
print (u‘序列化後的數據類型為:‘,type(str1))
print (u‘序列化後的數據為:‘,str1)
#對str1進行反序列化
dict2=json.loads(str1)
print (u‘反序列化後的數據類型:‘,type(dict2))
print (u‘反序列化後的數據:‘,dict2)
技術分享

輸出:

未序列化前的數據類型為: <class ‘dict‘>

未序列化前的數據: {‘age‘: 24, ‘name‘: ‘雷子‘, ‘address‘: ‘北京‘}

序列化後的數據類型為: <class ‘str‘>

序列化後的數據為: {"age": 24, "name": "\u96f7\u5b50", "address": "\u5317\u4eac"}

反序列化後的數據類型: <class ‘dict‘>

反序列化後的數據: {‘age‘: 24, ‘name‘: ‘雷子‘, ‘address‘: ‘北京‘}

結合requests庫,來看返回的json數據,具體代碼為:

技術分享
import  json,requests

r=requests.get(‘http://wthrcdn.etouch.cn/weather_mini?city=北京‘)

print (r.text,u‘數據類型:‘,type(r.text))
#對數據進行反序列化的操作
dic=json.loads(r.text)
print (dic,u‘數據類型:‘,type(dic))
技術分享

結果:

技術分享 技術分享
{"desc":"OK","status":1000,"data":{"wendu":"4","ganmao":"將有一次強降溫過程,且風力較強,極易發生感冒,請特別註意增加衣服保暖防寒。","forecast":[{"fengxiang":"北風","fengli":"4-5級","high":"高溫 6℃","type":"多雲","low":"低溫 -2℃","date":"20日星期一"},{"fengxiang":"南風","fengli":"微風級","high":"高溫 1℃","type":"小雪","low":"低溫 -3℃","date":"21日星期二"},{"fengxiang":"北風","fengli":"3-4級","high":"高溫 8℃","type":"陰","low":"低溫 -2℃","date":"22日星期三"},{"fengxiang":"南風","fengli":"微風級","high":"高溫 8℃","type":"晴","low":"低溫 -2℃","date":"23日星期四"},{"fengxiang":"北風","fengli":"微風級","high":"高溫 10℃","type":"晴","low":"低溫 -2℃","date":"24日星期五"}],"yesterday":{"fl":"4-5級","fx":"北風","high":"高溫 15℃","type":"多雲","low":"低溫 -2℃","date":"19日星期日"},"aqi":"37","city":"北京"}} 數據類型: <class ‘str‘>{‘status‘: 1000, ‘data‘: {‘city‘: ‘北京‘, ‘yesterday‘: {‘fx‘: ‘北風‘, ‘type‘: ‘多雲‘, ‘date‘: ‘19日星期日‘, ‘fl‘: ‘4-5級‘, ‘high‘: ‘高溫 15℃‘, ‘low‘: ‘低溫 -2℃‘}, ‘forecast‘: [{‘fengxiang‘: ‘北風‘, ‘low‘: ‘低溫 -2℃‘, ‘fengli‘: ‘4-5級‘, ‘date‘: ‘20日星期一‘, ‘high‘: ‘高溫 6℃
技術分享 技術分享 技術分享

‘, ‘type‘: ‘多雲‘}, {‘fengxiang‘: ‘南風‘, ‘low‘: ‘低溫 -3℃‘, ‘fengli‘: ‘微風級‘, ‘date‘: ‘21日星期二‘, ‘high‘: ‘高溫 1℃‘, ‘type‘: ‘小雪‘}, {‘fengxiang‘: ‘北風‘, ‘low‘: ‘低溫 -2℃‘, ‘fengli‘: ‘3-4級‘, ‘date‘: ‘22日星期三‘, ‘high‘: ‘高溫 8℃‘, ‘type‘: ‘陰‘}, {‘fengxiang‘: ‘南風‘, ‘low‘: ‘低溫 -2℃‘, ‘fengli‘: ‘微風級‘, ‘date‘: ‘23日星期四‘, ‘high‘: ‘高溫 8℃‘, ‘type‘: ‘晴‘}, {‘fengxiang‘: ‘北風‘, ‘low‘: ‘低溫 -2℃‘, ‘fengli‘: ‘微風級‘, ‘date‘: ‘24日星期五‘, ‘high‘: ‘高溫 10℃‘, ‘type‘: ‘晴‘}], ‘ganmao‘: ‘將有一次強降溫過程,且風力較強,極易發生感冒,請特別註意增加衣服保暖防寒。‘, ‘wendu‘: ‘4‘, ‘aqi‘: ‘37‘}, ‘desc‘: ‘OK‘} 數據類型: <class ‘dict‘>


技術分享

Python 接口測試(四)