接口自动化多层嵌套json数据处理代码实例

 更新时间:2020年11月20日 10:43:09   作者:yoyo008  
这篇文章主要介绍了接口自动化多层嵌套json数据处理代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

最近在做接口自动化测试,响应的内容大多数是多层嵌套的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类型的字符串。

有个朋友分享过这段代码,大家可以试试。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • postman传递当前时间戳实例详解

    postman传递当前时间戳实例详解

    在本篇文章里小编给大家整理的是一篇关于postman传递当前时间戳知识点相关内容,有需要的朋友们可以学习下。
    2019-09-09
  • django admin 自定义替换change页面模板的方法

    django admin 自定义替换change页面模板的方法

    今天小编就为大家分享一篇django admin 自定义替换change页面模板的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Django学习教程之静态文件的调用详解

    Django学习教程之静态文件的调用详解

    这篇文章主要给大家介绍了关于Django学习教程之静态文件调用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用django具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • Python实现批量下载文件

    Python实现批量下载文件

    之前给大家分享的python 多线程抓取网页,不过这个只能用python 来抓取到网页的源代码,如果你想用做python 下载文件的话,上面的可能就不适合你了,最近我在用python 做文件下载的时候就遇到这个问题了,不过最终得以解决,我把代码发出来
    2015-05-05
  • Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块

    Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块

    这篇文章主要介绍了Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python接口自动化浅析登录接口测试实战

    Python接口自动化浅析登录接口测试实战

    本文主要接好了python接口自动化的接口概念、接口用例设计及登录,跟随本文章来进行一个接口用例设计及登录接口测试实战,有需要的朋友可以参考下
    2021-08-08
  • 解决json中ensure_ascii=False的问题

    解决json中ensure_ascii=False的问题

    这篇文章主要介绍了解决json中ensure_ascii=False的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python的psutil模块详解

    Python的psutil模块详解

    psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息,需要的朋友可以参考下
    2023-05-05
  • python中字符串数组逆序排列方法总结

    python中字符串数组逆序排列方法总结

    在本篇文章里小编给大家整理了关于python中字符串数组如何逆序排列的相关知识点,需要的朋友们学习下。
    2019-06-06
  • python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)

    python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)

    这篇文章主要介绍了python Json 数据处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论