Jmeter 中JSON Path Extractor高级用法

时间:2021-08-06 16:39:06

好久没玩jemter了,由于项目原因又重新拾起。在使用JSON Path Extractor(jmeter 4.0已经默认支持了,4.0以下要自行安装插件)时,可以进行条件过滤,不用再自行写shell。

假设JSON返回数据格式如下:

{
"Province": [
{
"Name": "Beijing",
"population": "10000"
},
{
"Name": "Shanghai",
"population": "800"
},
{
"Name": "Guangzhou",
"population": "900"
}
],
"property": "biggest",
"state": "China"
}

1、简单的匹配就不说了,网上一大把。

2、匹配所有省份名字:$..Name

将会得到一个省份名的数组,Name=["Beijing","Shanghai","Guangzhou"]

这时可以jmeter对应的变量来获取值,如${Name_1}、${Name_matchNr}=3

Json Path高级用法:$..Name[0],可以将第一个省份提取出来

还有一个功能:Compute concatenation var,是匹配所有,默认是没有勾选,如果要使用,需要勾选。并用,号做分隔符,并且匹配的变量名为xxx_ALL

该功能需要将Match No.中写成-1,匹配所有结合使用。

3、Json条件选择

    Json Path的条件过滤使用以下的表达式

?()  ----表示条件过滤函数

@过滤什么

举例:

$..[?(@.Name=='Beijing')] ----将省份名为北京的所有数据过滤出来了

$.Province[?(@.Name="Beijing")].population   ----将省份名为北京的人口过滤出来了

还支持*号:

$.Province[*].population  ---将所有人口过滤出来

$.Province[@.length-1].population    ---将最后一条数据的人口过滤出来

$.Province[:-2].population  ----将前面二条数据人口过滤出来

4、多参数

    直接举例吧

$.[property,state]

将会得到两个值的数组["biggest","china"]

可以再用jmeter对应的函数xxx_1,xxx_2,xxx_matchNr来得到对应值 ,方法同2