接口自动化多层嵌套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

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

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

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将多层嵌套JSON数据存入Excel,需要使用第三方库来实现。以下是使用js-xlsx库实现的示例代码: ```javascript // 引入js-xlsx库 const XLSX = require('xlsx'); // 定义多层嵌套JSON数据 const data = { name: 'John', age: 30, address: { street: '123 Main St', city: 'Anytown', state: 'CA', zip: 12345 }, friends: [ { name: 'Jane', age: 28, address: { street: '456 Second St', city: 'Othertown', state: 'NY', zip: 67890 } }, { name: 'Bob', age: 32, address: { street: '789 Third St', city: 'Somewhere', state: 'TX', zip: 54321 } } ] }; // 定义Excel表格的列头 const headers = ['Name', 'Age', 'Street', 'City', 'State', 'Zip']; // 定义Excel表格的数据 const rows = []; // 递归函数,用于将多层嵌套JSON数据转换为Excel表格的行数据 function parseData(obj, parentKey = '') { for (const key in obj) { const currentKey = parentKey ? `${parentKey}.${key}` : key; if (typeof obj[key] === 'object') { parseData(obj[key], currentKey); } else { const rowIndex = rows.length; if (!rows[rowIndex]) { rows[rowIndex] = []; } rows[rowIndex][headers.indexOf(currentKey)] = obj[key]; } } } // 将JSON数据转换为Excel表格的行数据 parseData(data); // 创建Excel表格 const workbook = XLSX.utils.book_new(); // 创建工作表 const worksheet = XLSX.utils.aoa_to_sheet([headers, ...rows]); // 将工作表添加到工作簿中 XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 将工作簿保存为Excel文件 XLSX.writeFile(workbook, 'data.xlsx'); ``` 在上述代码中,我们首先定义了一个多层嵌套JSON数据,然后使用递归函数将其转换为Excel表格的行数据。接着,我们使用js-xlsx库创建了一个工作簿,并将工作表添加到其中,最后将工作簿保存为Excel文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值