Jmeter 中JSON Path Extractor高级用法

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

posted @ 2018-04-12 10:09  Believer007  阅读(1175)  评论(0编辑  收藏  举报