接口自动化多层嵌套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对象的深拷贝和浅拷贝详解
Aug 25 Python
python基础教程之匿名函数lambda
Jan 17 Python
python3操作mysql数据库的方法
Jun 23 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
python日期与时间戳的各种转换示例
Feb 12 Python
基于python3实现倒叙字符串
Feb 18 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
详解anaconda离线安装pytorchGPU版
Sep 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
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
javascript常用函数(2)
2015/11/05 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
Python实现识别手写数字大纲
2018/01/29 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
高校教师自荐信范文
2014/03/13 职场文书
计算机求职信
2014/07/02 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
工商局个人工作总结
2015/03/03 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
优秀员工演讲稿
2019/06/21 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
Python开发简易五子棋小游戏
2022/05/02 Python