美文网首页
Jmeter后置处理器之Json提取器详解

Jmeter后置处理器之Json提取器详解

作者: Kingtester | 来源:发表于2019-06-26 09:24 被阅读0次

    用法说明

    json 提取器参数介绍

    names of created variables :接收值的变量名,多个变量时用分号分隔

    json path: json path表达式,也是用分号分隔

    match no:0随机;n取第几个匹配值;-1匹配所有,后续引用用 变量名_N 取第N个值。

    default values: 缺省值,匹配不到值的时候取该值
    此提取器用于提取请求返回结果中的某个值或者某一组值,用法比正则表达式要简单,标准写法为$.key,其中key为返回结果map中的一个键,如果是多层则继续用.key进行即可,如果遇到key的value值为一个List,则使用.key[n],其中n为list中元素的编号,如下使用实例来说明下如何使用;

    在这里插入图片描述

    如上示例为单元素获取方法,如果要获取多个元素,则参数名称写多个,用逗号分开;
    而json提取器语法用分号隔开,应当与参数名称一一对应;
    匹配编号一样的需要用分号隔开,与参数名称一一对应;
    默认值同样用分号隔开,与参数名称一一对应;

    Json提取器语法说明

    完整的语法说明请见https://github.com/json-path/JsonPath

    调试方法:

    在View Result Tree中选择JSON Path Tester,即可展开如下图的右侧内容,输入表达式即可拿来测试书写的Json提取器表达式是否能正常工作:


    在这里插入图片描述

    下面这个图片中的json字符串即为测试对象:


    在这里插入图片描述

    1、获取第一层中的某个value值:

    获取jsonrpc这个key的value值:
    输入$.jsonrpc:

    在这里插入图片描述

    正常获取到结果

    2、获取第二层List中某个key的value值

    譬如我们要获取result的值中第一个元素的name的值,预期应当为111,使用如下语句:
    $.result[0].name

    在这里插入图片描述

    结果符合预期,此处注意列表编号从0开始;

    3、获取第三层的某个value值

    譬如我们要获取528,使用语句为$.result[1].approver[0]

    在这里插入图片描述

    从这里可知,我们书写表达式时需要根据是map还是list来进行区别,list需要使用[n]标号,而map则不用,每一层用.来区分即可;

    4、获取列表下全部的某一个元素

    譬如我们要获取全部的keynamevalue值,可以使用如下语句$.result[*].name

    在这里插入图片描述

    获取到的为一个列表,其有三个值,符合预期;
    那么获取第三层中所有的的第一个元素呢?
    表达式为$.result[*].approver[0],结果如下:

    在这里插入图片描述

    符合预期;
    这里说明下,使用*号意味着获取所有列表元素;
    此种情况下返回的为一个list,那么如果此list被放入参数var中,那么我如果想获取var中某一个值譬如528该如何使用呢?答案就是在参数名后边加_n,其中n为编号,从1开始;
    ${var_2}即可获取到列表中第二个元素即528

    5、提取特定条件的某个值

    如下我想提取object_id为0的那个元素的id值:

    在这里插入图片描述

    可以使用语法$.result.records[?(@.object_id==0)].id

    在这里插入图片描述

    写法?(@.object_id==0)为固定写法,常用于列表内元素的筛选,如果值为字符串,则记得加双引号;

    6、获取前N个值

    还是以上面那个json字符串作为例子,如果要获取records下的前两个元素的id值,则使用语法$.result.records[:2].id

    在这里插入图片描述

    $.result.records[2].id 是排除前两条数据;
    $.result.records[-2].id 是排除后两条数据;

    7、获取固定条件下的多个key的value值

    语法$.result.records[?(@.object_id==0)].["id","name","is_active"]

    在这里插入图片描述

    </article>

    7,一次取多个值:
    这个相对于来说比较简单,只需要按照普通的json提取器,使用调试请求观察一下就好了。


    image.png image.png
    image.png

    相关文章

      网友评论

          本文标题:Jmeter后置处理器之Json提取器详解

          本文链接:https://www.haomeiwen.com/subject/jndqcctx.html