jmeter--JSON Extractor 用法

   JMeter处理大部分请求返回的结果,都是json。对于请求返回的结果,处理以后作为其他请求的参数,有一个方便使用的插件:JSON Extractor

   JSON Extractor中文叫做json提取器。

设置内容如下:

  1、names(名称):提取器的名称

  2、comments:提取器功能解释
  3、Apply to(应用范围):
        Main sample and sub-samples:应用于主sample及子sample
        Main sample only:默认的是这个,应用于主sample,一般选择这个就可以。
        Sub-samples only:应用于子sample

  4、变量提取内容设置:

        Names of created variables:接收提取值的变量名,建议英文

        JSON Path expression: json表达式中最关键的内容是json path expression。语法如下:

jsonpath

表示值

jsonpath

表示值

$

根节点

.  或者  []

子节点

@

当前节点

?()

过滤条件

*

所有子节点

()

支持表达式计算

..

选择所有符合条件的节点

[start:stop:step]

数组切片运算符

[]

迭代器下标,例如数组下标

[,]

支持迭代器内多选

i

对大小写不敏感

=~

正则表达式,例如匹配字符串为 /.*指定字符串.*?/i 

用到的逻辑运算符:

 

 举个例子:

{
    "code": 0,
    "data": {
        "loanArray": [{
                "name": "test_1",
                "priority": 0,
                "list": [{
                        "period": "24期",
                        "id": 66601
                    },
                    {
                        "period": "36期",
                        "id": 2792
                    }
                ]
            },
            {
                "name": " test_2",
                "priority": 1,
                "list": [{
                        "period": "24期",
                        "id": 66637
                    },
                    {
                        "period": "36期",
                        "id": 66633
                    }
                ]
            },
            {
                "name": " test_3",
                "priority": 2,
                "list": [{
                        "period": "24期",
                        "id": 66646
                    },
                    {
                        "period": "36期",
                        "id": 66642
                    }
                ]
            },
           ……
        ],
        "loanP": [{
                "id": 2,
                "keys": "CASH_FLOW",
                "name": "name_1"
            },
            ……
        ]
    },
    "mask": "c1b8333a-732c-4666f-adad-b68b0b275f65",
    "msg": "success",
    "timestamp": 1575452653
}

要提取loanArray数组下name==" test_1"的list下的id

表达式如下(注意全部是英文格式):

      $.data.loanArray[?(@.name==“test_1”)].id

      或者$..loanArray[?(@.name==“test_1”)].id

要提取loanArray数组下priority超过1的list下的id值可以写作:

     $.. loanArray[?(@.priority>1)].id

要提取loanArray数组下name包含“ test”的list下的id可以写作:

     $.. loanArray[?(@.name=~/.*test.*?/i)].id

 

5、Match No.(0 for Random):匹配数是指匹配第几个。匹配数字(0代表随机,1代表第一个,-1代表所有)如果是-1,则是匹配所有。

     如上图:可以一次从json返回中提取多个参数,相互之间按照英文;来隔开;注意:当json提取器要提取两个值(或两个以上)的时候,每一个字段都必填值,且字段值的数量要一致(勾不勾 Compute concatenation var 看需求下面介绍)。字段值数量不一致则没法提取值,会报错“Mismatch between number of variables, json expressions and default values”。

6、 Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存为数组,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作,如:

 

 

7、Default Values:缺省值。即如果未匹配到数值,默认是多少。

 

posted @ 2021-05-11 16:08  CQUqinghua  阅读(820)  评论(0编辑  收藏  举报