接口自动化多层嵌套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中关键字nonlocal和global的声明与解析
Mar 12 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
Python工厂函数用法实例分析
May 14 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
python实现小世界网络生成
Nov 21 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
详解pycharm自动import所需的库的操作方法
Nov 30 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实现字符串翻转的方法
2015/03/27 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
列表内容的选择
2006/06/30 Javascript
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
Python算法之栈(stack)的实现
2014/08/18 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
python 日志增量抓取实现方法
2018/04/28 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
Django多数据库的实现过程详解
2019/08/01 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
匡威德国官网:Converse德国
2019/01/26 全球购物
军人违纪检讨书
2014/02/04 职场文书
人力资源主管职责范本
2014/03/05 职场文书
青年文明号服务承诺
2014/03/31 职场文书
应届大专生求职信
2014/06/26 职场文书
2014年教师节活动总结
2014/08/29 职场文书
工程质量保证书
2015/05/09 职场文书