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

最近在做接口自动化测试,响应的内容大多数是多层嵌套的json数据,在对响应数据进行校验的时候,可以通过(key1.key2.key3)形式获取嵌套字典值的方法获取响应值,再和预期值比较

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

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类型的字符串。

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值