接口自动化多层嵌套json数据处理代码实例


Posted in Python onNovember 20, 2020

最近在做接口自动化测试,响应的内容大多数是多层嵌套的json数据,在对响应数据进行校验的时候,可以通过(key1.key2.key3)形式获取嵌套字典值的方法获取响应值,再和预期值比较

keys_list = keys.split('.')
  #以“.”为间隔,将字符串分裂为多个字符串,其实字符串为字典的键,保存在列表keys_list里
  if isinstance(date,dict):
    #如果传入的数据为字典
    dictionary = dict(date)
    #初始化字典
    for i in keys_list:
      #按照keys_list顺序循环键值
      try:
        if dictionary.get(i) != None:
          dict_values = dictionary.get(i)
        #如果键对应的值不为空,返回对应的值
        elif dictionary.get(i) == None:
          dict_values = dictionary.get(int(i))
        #如果键对应的值为空,将字符串型的键转换为整数型,返回对应的值
      except:
        return default
          #如果字符串型的键转换整数型错误,返回None
      dictionary = dict_values
    return dictionary
  else: 
    #如果传入的数据为非字典
    try:
      dictionary = dict(eval(date))
      #如果传入的字符串数据格式为字典格式,转字典类型,不然返回None
      if isinstance(dictionary,dict):
        for i in keys_list:
          #按照keys_list顺序循环键值
          try:
            if dictionary.get(i) != None:
              dict_values = dictionary.get(i)
            #如果键对应的值不为空,返回对应的值
            elif dictionary.get(i) == None:
              dict_values = dictionary.get(int(i))
            #如果键对应的值为空,将字符串型的键转换为整数型,返回对应的值
          except:
            return default
              #如果字符串型的键转换整数型错误,返回None
          dictionary = dict_values
        return dictionary
    except:
      return default

运行结果:

一:字典类型数据。

接口自动化多层嵌套json数据处理代码实例

二:字典类型数据,包含的键为数字。

接口自动化多层嵌套json数据处理代码实例

三:json类型的字符串。

接口自动化多层嵌套json数据处理代码实例

有个朋友分享过这段代码,大家可以试试。

class obj(object):
  def __init__(self, d):
    for a, b in d.items():
      if isinstance(b, (list, tuple)):
        setattr(self, a, [obj(x) if isinstance(x, dict) else x for x in b])
      else:
        setattr(self, a, obj(b) if isinstance(b, dict) else b)

d = {'a':1, 'b':{'c':2}, 'd':[{'e':1}]}

res = obj(d)
print res.a
print res.b.c
print res.d[0].e

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 文件和路径操作函数小结
Nov 23 Python
Python中的super用法详解
May 28 Python
Python导出DBF文件到Excel的方法
Jul 25 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
详解python 发送邮件实例代码
Dec 22 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
Python实现批量压缩图片
Jan 25 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
Jul 14 Python
如何用Django处理gzip数据流
Jan 29 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 #Python
Django vue前后端分离整合过程解析
Nov 20 #Python
基于Python的图像阈值化分割(迭代法)
Nov 20 #Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 #Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 #Python
python IP地址转整数
Nov 20 #Python
Python django框架 web端视频加密的实例详解
Nov 20 #Python
You might like
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
公司出纳岗位职责
2013/12/07 职场文书
化学实验员岗位职责
2013/12/28 职场文书
2014年度思想工作总结
2014/11/27 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
合同补充协议书
2016/03/24 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL