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

Jmeter系列(六)_Json表达式关联_倒序

Variable names : 名称 
JSONPath Expression
JSON表达式 
Match Numbers
0代表随机1代表第1个,-1代表全部
Default Value
:未取到值的时候默认值

下面举例来讲解jsonpath的写法

Jmeter系列(六)_Json表达式关联_数据_02

$..Name:列出所有省份

 

Jmeter系列(六)_Json表达式关联_取值_03

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

Jmeter系列(六)_Json表达式关联_数组_04

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

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

Jmeter系列(六)_Json表达式关联_倒序_05

注意:

$.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: 表示倒序取一条数据

Jmeter系列(六)_Json表达式关联_倒序_06

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

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

Jmeter系列(六)_Json表达式关联_数组_07

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

示例:

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

Jmeter系列(六)_Json表达式关联_json_08

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

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

Jmeter系列(六)_Json表达式关联_json_09

Jmeter系列(六)_Json表达式关联_json_10

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

Jmeter系列(六)_Json表达式关联_json_11

Jmeter系列(六)_Json表达式关联_数组_12

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

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

加入QQ群317765580获得jmx测试脚本