json获取随机数字_Jmeter_Json表达式关联(二)

7479bbfe08ed26138daefc0778004632.png

在Jmeter中,除了正则表达式和xpath表达式,还有一种方式也可以做关联,那就是 Json Extractor。它是利用json表达式提取出关键信息,传递变量。

b6e228a35ea27880da5d5084869315ab.png

8f0126fd0c5f6c7b0de1b16a66baa421.png

Variable names : 名称

JSONPath Expression:JSON表达式

Match Numbers:0代表随机,1代表第1个,-1代表全部

Default Value:未取到值的时候默认值

我们在用jmeter做接口测试的时候,有的时候会遇到一些复杂的json响应。比如多层list嵌套时的取值

下面举例来讲解jsonpath的写法

ddf28a80ee2f13ee04c767aa5ebb7876.png

$..Name:列出所有省份

bcdfbb3291f920551ff927af6c035438.png

$..Province[0].Name 提取Province中第一个list中的Name

7b44ff12dabdb2da31fcd736113c9148.png

$..[?(@.Name=='Beijing')] 筛选出省份名为Beijing的所有list数据

6d6a472a98d73d70e2db208a3e4a2d8f.png

$.Province[:2].population 筛选前两条数据

cf36500679c6030d79fdf03d348b3b0e.png

注意:

$.Province[:2].population 是筛选出前两条数据 ;

$.Province[2].population 是排除前两条数据;

$.Province[-2].population是排除后两条数据,千万别弄混了哦~

这里做一下总结:

1: 冒号在前

:index 正序取值,取数为index

例:1 表示正序取1条数据(正数第一条)

:-index 倒序过滤,取数为index

例:-1 表示倒序过滤一条数据(倒数第一条)

2:没有冒号

index 表示顺序取index+1的值

例: 1 取第二条数据

3:冒号在后

index: 顺序过滤,取数为index

例: 1: 表示正序过滤第一条数据

-index:倒序取值,取数为index

例:-1: 表示倒序取一条数据

下面列举一个复杂的例子:

79e157d647140c581934b39a01a2bc51.png

这是一个多层嵌套的jsonlist,需要提取所有cabinInfos列表下,patFlag=Y时的cabin,standardPrice和finallyPrice。

是不是听起来就很复杂?如果按照传统的正则表达式提取,那么 很难满足这里的需求了。因此就需要用到jsonpath表达式。

$..[?(@.patFlag=="Y")].["cabin","standardPrice","finallyPrice"]

c62d0d8caf9613bd8b839e8b42f9107c.png

注:JSON Extractor使用json path表达式匹配,可以一次取多个变量值。$表示响应的根对象。取子对象或对象的属性用. 取数组里的对象用[],数组索引从0开始

示例:

下面这个响应是一个list组,可以提取前两个list里面的Name

93853c73b2c24cc1608f4d172af5be97.png

1:添加一个JSON Extractor表达式,分号分隔多个参数名;分号分隔多个json表达式;分号分隔多个匹配数字;分号分隔多个默认值(必填

2:所有的个数一定要匹配,任一个不匹配该请求都不会在提取成功

ab9ea6cc92efb7793b4e42cff2222c44.png

c16c224c622678976894cc066ca9301e.png

也可以用表达式匹配所有值,然后用match no获取想要的值

9a25019cbbdcf3eed508bb699cb830a4.png

7ae61fb9d63b4b966747a156e698f89c.png

提供一个mock接口的地址,直接访问即可

https://easy-mock.com/mock/5b88b27476b79510db917603/example/query1


版权声明:本文为weixin_42361283原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。