接口自动化多层嵌套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实现一个简单的多线程TCP服务器的教程
May 05 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
numpy的Fancy Indexing和array比较详解
Jun 11 Python
django下创建多个app并设置urls方法
Aug 02 Python
Python logging日志库空间不足问题解决
Sep 14 Python
python基础之匿名函数详解
Apr 21 Python
python中subplot大小的设置步骤
Jun 28 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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个人网站架设连环讲(三)
2006/10/09 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
js计数器代码
2006/11/04 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
Python多分支if语句的使用
2020/09/03 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
Python装饰器的练习题
2021/11/23 Python
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸