python全面解析接口返回数据


Posted in Python onFebruary 12, 2022

解析接口返回数据

1、把json格式的数据

转换成单个{key,value}的形式,并把每个dict存入list

def parse(self,data): #解析json格式的数据 ,生成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的每一个项 进行解析
                   self.parse(value[k])
           else:
               self.L.append({key: value})
       return self.L

2、把 变成list的request 和expect一一对比

得知预期值和返回值是否是相符合

def compare(self,resjson,targjson): #比较两个数值返回,如果相等,则返回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里面,成员运算符,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))

结果:返回True or False,因为username两边大小写不一致,所以返回为False

python全面解析接口返回数据

小结:这个parse加compare函数,就可以在接口返回结果时候,直接assert(),得出true or false

完整代码

class Tools:
    def __init__(self):
        self.L = []
    def init(self):
        self.L = []
    def parse(self,data): #解析json格式的数据 ,生成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的每一个项 进行解析
                    self.parse(value[k])
            else:
                self.L.append({key: value})
        return self.L
    def compare(self,resjson,targjson): #比较两个数值返回,如果相等,则返回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里面,成员运算符,in or not in
                count -=1
            else:
                return False
        return True

python请求接口,抓取返回的数据

代码如下

# 引入包
import urllib2
import json
import sys 
 
url = 'http://alisleepy.top' # 接口地址
responseResult = urllib2.urlopen(url, None, timeout=2000)
code = responseResult.getcode()
print '接口状态码:' + str(code)
if code != 200:
	sys.exit('request failed,please check interface is correct!')
 
# 检查数据,是否符合预期
data = json.loads(responseResult.read()) # 反序列化json数据
print 'code码:' + str(data['code])
print 'msg信息:' + str(data['msg'])

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python self,cls,decorator的理解
Jul 13 Python
python递归计算N!的方法
May 05 Python
python文件特定行插入和替换实例详解
Jul 12 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
Python升级导致yum、pip报错的解决方法
Sep 06 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
详解python之协程gevent模块
Jun 14 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
python实现音乐播放器 python实现花框音乐盒子
Feb 25 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
高考考python编程是真的吗
Jul 20 Python
用Python将库打包发布到pypi
Apr 13 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 #Python
python中出现invalid syntax报错的几种原因分析
Feb 12 #Python
python ConfigParser库的使用及遇到的坑
Feb 12 #Python
Python制作春联的示例代码
Jan 22 #Python
Python制作表白爱心合集
基于Python实现一个春节倒计时脚本
Jan 22 #Python
详解Python如何批量采集京东商品数据流程
Jan 22 #Python
You might like
PHP编写RESTful接口的方法
2016/02/21 PHP
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python常见数据结构详解
2014/07/24 Python
用python实现面向对像的ASP程序实例
2014/11/10 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
django中静态文件配置static的方法
2018/05/20 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
通信工程专业毕业生推荐信
2013/12/25 职场文书
挂牌仪式主持词
2014/03/20 职场文书
公司租房协议书
2014/10/14 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
给下属加薪申请报告
2015/05/15 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
php去除deprecated的实例方法
2021/11/17 PHP
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android