好久没玩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