Jmeter后置处理器, json提取器

Jmeter后置处理器, json提取器

如下为json提取器的界面:

ea901776ddda41efb12389ead508d476.png

 

用法说明:

此提取器用于提取请求返回结果中的某个值或者某一组值,用法比正则表达式简单,标准写法为:$.key,其中key为返回结果may中的一个键,如果是多层则继续用.key进行即可,如果遇到key的value的值为一个List,则使用.key[n],其中n为list中元素的编号,如下使用实例来说明如何使用

00ee9f8964994865a68406a353b449a8.png

 

以上示例为单元素获取方法,如果要获取多个元素,则参数名称写多个,用逗号分开;

Json提取器语法用分号隔开,应当与参数名称一一对应

匹配编号一样的需要用分号隔开,与参数名称一一对应

默认值同样用分号隔开,与参数名称一一对应

 

 在View Result Tree中选择JSON Path Tester,即可展开如下图的右侧内容,输入表达式即可拿来测试书写的Json提取器表达式是否能正常工作:

282a85b811454d4eb511f4173f92a88d.png

  下面这个图片中的json字符串即为测试对象:  

c476869b1ee34df6b26c5f8c87b199e0.png

 

 

  1. 获取第一层中的某个value值:

031c2c5fd4c1448281a71e29fb5f751b.png

7b53ebe1136d4bfb88629d7fb599e7a6.png

2、获取第二层List中某个key的value值

譬如我们要获取result的值中第一个元素的name的值,预期应当为111,使用如下语句:

$.result[0].name

1ad9fc5022b148b0b39c59a34f38bd6a.png

结果符合预期,此处注意列表编号从0开始;

 

3、获取第三层的某个value值

  譬如我们要获取528,使用语句为$.result[1].approver[0]

708387e171fc47109e330d04903f53f9.png

 

从这里可知,我们书写表达式时需要根据是map还是list来进行区别,list需要使用[n]标号,而map则不用,每一层用.来区分即可;

4、获取列表下全部的某一个元素

  譬如我们要获取全部的key为name的value值,可以使用如下语句$.result[*].name

0fc6579e51bb46c29ea0865fc0123059.png

 获取到的为一个列表,其有三个值,符合预期;

  那么获取第三层中所有的的第一个元素呢?

  表达式为$.result[*].approver[0],结果如下:

8974105edc254536892730c7ed43d54c.png

 符合预期;

  这里说明下,使用*号意味着获取所有列表元素;

  此种情况下返回的为一个list,那么如果此list被放入参数var中,那么我如果想获取var中某一个值譬如528该如何使用呢?答案就是在参数名后边加_n,其中n为编号,从1开始;

${var_2}即可获取到列表中第二个元素即528;

5、提取特定条件的某个值

  如下我想提取object_id为0的那个元素的id值:

698576280f714ea483fbbbcb974ac9ed.png

 可以使用语法$.result.records[?(@.object_id==0)].id;

237dac1328d246d88ca86ea311a5f4d7.png

 写法?(@.object_id==0)为固定写法,常用于列表内元素的筛选,如果值为字符串,则记得加双引号;

6、获取前N个值

  还是以上面那个json字符串作为例子,如果要获取records下的前两个元素的id值,则使用语法$.result.records[:2].id

4dc321fcf19b46d9a854c222d9a86366.png

$.result.records[2].id 是排除前两条数据;

$.result.records[-2].id 是排除后两条数据;

7、获取固定条件下的多个key的value值

  语法$.result.records[?(@.object_id==0)].["id","name","is_active"]

bdae9bbbb0fc4c6cac94ca595a0f0e98.png

 

  1.  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值