python全面解析接口返回?cái)?shù)據(jù)
解析接口返回?cái)?shù)據(jù)
1、把json格式的數(shù)據(jù)
轉(zhuǎn)換成單個{key,value}的形式,并把每個dict存入list
def parse(self,data): #解析json格式的數(shù)據(jù) ,生成list for key, value in data.items(): if isinstance(value, dict): self.parse(value) elif isinstance(value, list): for k in range(len(value)): # 由于list沒有items,所以一個一個遍歷lis里面的值,然后針對list的每一個項(xiàng) 進(jìn)行解析 self.parse(value[k]) else: self.L.append({key: value}) return self.L
2、把 變成list的request 和expect一一對比
得知預(yù)期值和返回值是否是相符合
def compare(self,resjson,targjson): #比較兩個數(shù)值返回,如果相等,則返回True,否則返回false self.init() res_list = self.parse(resjson) self.init() targ_list = self.parse(targjson) count = len(targ_list) while count: if targ_list[count - 1] in res_list: # list里面,成員運(yùn)算符,in or not in count -=1 else: return False return True
3、測試一下看是否正確
if __name__ == "__main__": t = Tools() request = { "head": { "clientId": "12", "appUDID": "", "appVersion": "", "channelId": "", "innerMedia": "", "outerMedia": "", "subClientId": "h5", "origin": "", "test":[{"hahah":"haha"}] }, "body": { "userName": "your user name", "password": "password" } } expect = {"username":"your user name","password":"password"} # print(t.parse(request)) print(t.compare(request,expect))
結(jié)果:返回True or False,因?yàn)閡sername兩邊大小寫不一致,所以返回為False
小結(jié):這個parse加compare函數(shù),就可以在接口返回結(jié)果時候,直接assert(),得出true or false
完整代碼
class Tools: def __init__(self): self.L = [] def init(self): self.L = [] def parse(self,data): #解析json格式的數(shù)據(jù) ,生成list for key, value in data.items(): if isinstance(value, dict): self.parse(value) elif isinstance(value, list): for k in range(len(value)): # 由于list沒有items,所以一個一個遍歷lis里面的值,然后針對list的每一個項(xiàng) 進(jìn)行解析 self.parse(value[k]) else: self.L.append({key: value}) return self.L def compare(self,resjson,targjson): #比較兩個數(shù)值返回,如果相等,則返回True,否則返回false self.init() res_list = self.parse(resjson) self.init() targ_list = self.parse(targjson) count = len(targ_list) while count: if targ_list[count - 1] in res_list: # list里面,成員運(yùn)算符,in or not in count -=1 else: return False return True
python請求接口,抓取返回的數(shù)據(jù)
代碼如下
# 引入包 import urllib2 import json import sys url = 'http://alisleepy.top' # 接口地址 responseResult = urllib2.urlopen(url, None, timeout=2000) code = responseResult.getcode() print '接口狀態(tài)碼:' + str(code) if code != 200: sys.exit('request failed,please check interface is correct!') # 檢查數(shù)據(jù),是否符合預(yù)期 data = json.loads(responseResult.read()) # 反序列化json數(shù)據(jù) print 'code碼:' + str(data['code]) print 'msg信息:' + str(data['msg'])
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python獲取全國城市pm2.5、臭氧等空氣質(zhì)量過程解析
這篇文章主要介紹了python獲取全國城市pm2.5、臭氧等空氣質(zhì)量過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10Falsk 與 Django 過濾器的使用與區(qū)別詳解
這篇文章主要介紹了Falsk 與 Django 過濾器的使用與區(qū)別詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06python實(shí)現(xiàn)簡單http服務(wù)器功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單http服務(wù)器功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09pip matplotlib報(bào)錯equired packages can not be built解決
這篇文章主要介紹了pip matplotlib報(bào)錯equired packages can not be built解決,具有一定借鑒價值,需要的朋友可以參考下2018-01-01Python使用爬蟲抓取美女圖片并保存到本地的方法【測試可用】
這篇文章主要介紹了Python使用爬蟲抓取美女圖片并保存到本地的方法,涉及Python基于正則、爬蟲實(shí)現(xiàn)的圖片抓取與保存相關(guān)操作技巧,需要的朋友可以參考下2018-08-08Python?matplotlib的spines模塊實(shí)例詳解
作為程序員,經(jīng)常需要進(jìn)行繪圖,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib的spines模塊的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Python3交互式shell ipython3安裝及使用詳解
這篇文章主要介紹了Python3交互式shell ipython3安裝及使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07