ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Jmeter - Json提取器

2022-02-04 11:58:02  阅读:203  来源: 互联网

标签:提取 records value 获取 Json result key Jmeter id


一、用法说明

        此提取器用于提取请求返回结果中的某个值或者某一组值,用法比正则表达式要简单,标准写法为$.key,其中key为返回结果map中的一个键,如果是多层则继续用.key进行即可,如果遇到key的value值为一个List,则使用.key[n],其中n为list中元素的编号,如下使用实例来说明下如何使用;在这里插入图片描述
Json提取器语法用分号隔开,应当与参数名称一一对应;
匹配编号一样的需要用分号隔开,与参数名称一一对应;
默认值同样用分号隔开,与参数名称一一对应;

二、调试方法:

        在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、获取列表下全部的某一个元素

        譬如我们要获取全部的key为name的value值,可以使用如下语句$.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"]

在这里插入图片描述

 

标签:提取,records,value,获取,Json,result,key,Jmeter,id
来源: https://blog.csdn.net/qq_20427967/article/details/122782082

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有