接口自动化多层嵌套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手机号码归属地查询代码
May 04 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
在NumPy中创建空数组/矩阵的方法
Jun 15 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 Python
python Pillow图像处理方法汇总
Oct 16 Python
使用Python进行防病毒免杀解析
Dec 13 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
python爬虫基础知识点整理
Jun 02 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
js window.event对象详尽解析
2009/02/17 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
python图片验证码生成代码
2016/07/02 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
关于Python的一些学习总结
2018/05/25 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
台湾森森购物网:U-mall
2017/10/16 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
村干部承诺书
2014/03/28 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
买卖合同协议书范本
2014/10/18 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
muduo TcpServer模块源码分析
2022/04/26 Redis