接口自动化多层嵌套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中使用SimpleParse模块进行解析的教程
Apr 11 Python
Go语言基于Socket编写服务器端与客户端通信的实例
Feb 19 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
scrapy爬虫实例分享
Dec 28 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
python读写csv文件的方法
Aug 13 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 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模板技术[转]
2007/01/04 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
基于Python闭包及其作用域详解
2017/08/28 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
捐款倡议书格式范文
2014/05/14 职场文书
运动会加油口号
2014/06/07 职场文书
超市店庆活动方案
2014/08/31 职场文书
初二数学教学反思
2016/02/17 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
导游词之安徽九华山
2019/09/18 职场文书
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers