接口自动化多层嵌套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中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
用Python编写简单的微博爬虫
Mar 04 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
python实现基于信息增益的决策树归纳
Dec 18 Python
详解Python文件修改的两种方式
Aug 22 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
基于python监控程序是否关闭
Jan 14 Python
Python多进程编程常用方法解析
Mar 26 Python
Django返回HTML文件的实现方法
Sep 17 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
Python之字符串的遍历的4种方式
Dec 08 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
python3使用SMTP发送简单文本邮件
2018/06/19 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
程序集与命名空间有什么不同
2014/07/25 面试题
银行实习生的自我评价
2013/12/09 职场文书
党校学习自我鉴定
2014/02/24 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
八项规定整改方案
2014/10/01 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
董事长开业致辞
2015/07/29 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL