接口自动化多层嵌套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爬虫抓取手机APP的传输数据
Jan 22 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
解决sublime+python3无法输出中文的问题
Dec 12 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
聊聊Python String型列表求最值的问题
Jan 18 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/11/28 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
php计算整个目录大小的方法
2015/06/01 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
点球小游戏python脚本
2018/05/22 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Python-openCV开运算实例
2020/07/05 Python
Python调用Redis的示例代码
2020/11/24 Python
如何用python 操作zookeeper
2020/12/28 Python
蔻驰美国官网:COACH美国
2016/08/18 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
高中毕业生自我鉴定范文
2013/09/26 职场文书
成语的广告词
2014/03/19 职场文书
文艺晚会主持词
2014/03/24 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
公证书
2019/04/17 职场文书
VUE递归树形实现多级列表
2022/07/15 Vue.js
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript