Jmeter 提取http请求返回值里json数据参数化方法

本文介绍如何使用JMeter处理JSON响应数据,包括使用JSONExtractor插件的方法及常见问题解决技巧。

JMeter处理responses 的json

对于请求1返回的结果,处理以后作为请求2的参数,JMeter提供了正则表达式提取器

如下:

这里写图片描述

这样也可以通过正则表达式获取responses的某个值

但是对于大部分请求返回的结果,都是json,有一个更方便使用的插件:JSON Extractor 
不过得首先下载插件 https://jmeter-plugins.org/wiki/JSONPathExtractor/

下载后解压以后将lib和lib/ext中的jar包放到安装目录对应位置,重启即可

简单介绍一下该插件怎么使用

这里写图片描述

该插件为:

这里写图片描述

Variable names : 名称 
JSONPath Expression:JSON表达式 
Match Numbers:匹配哪个,可为空即默认第一个 
Default Value:未取到值的时候默认值

比如某一请求的返回值为:

{"statusCode":200,"data":{"userId":"4a2cbe616eb74f0d99190af072c8dea6","token":"37e7a9e198186f5a443e50e6138a5bd20bd"}}

这里因为返回的是json数据,$.data.token,获取token的值

但是有碰到一个坑 
另外一个接口请求返回值为:

{"statusCode":200,"data":[{"code":"407949","id":"aa477ad2085d492a99b877d14343d68d","name":"90一中4545"}]}

同样,使用$.data.id去提取id的值时,发现获取到的数据为空 
原来这个responses 的data为数组,故应为 $.data[0].id 提取第1个值

如下:

这里写图片描述

 

转载于:https://www.cnblogs.com/SH-xuliang/p/9273888.html

JMeter中使用BeanShell来进行JSON参数化,可以按照以下步骤进行操作: 1. 首先,将接口返回的JSON字符串转换为JSON对象。可以使用JSONObject类或ObjectMapper类进行操作。如果使用JSONObject类,可以使用其构造函数将JSON字符串转换为JSON对象。如果使用ObjectMapper类,可以使用其readValue方法JSON字符串转换为Map对象。 2. 为了遍历JSON中的嵌套数组,可以使用循环和流操作。在BeanShell中,可以使用forEach循环遍历列表,并使用get方法获取列表中每个元素的属性值。 3. 在遍历过程中,可以通过vars对象来存储和获取JMeter线程的局部变量。可以使用vars.get(String key)方法获取变量的值,使用vars.put(String key, String value)方法将值存储到变量中。 下面是一个示例代码,展示了如何在BeanShell中进行JSON参数化: ```java // 将返回值转换为JSON对象 JSONObject responseJson = new JSONObject(str); // 遍历ticket_periods列表 JSONArray ticketPeriods = responseJson.getJSONArray("ticket_periods"); for (int i = 0; i < ticketPeriods.length(); i++) { JSONObject ticketPeriod = ticketPeriods.getJSONObject(i); // 遍历periods列表 JSONArray periods = ticketPeriod.getJSONArray("periods"); for (int j = 0; j < periods.length(); j++) { JSONObject period = periods.getJSONObject(j); // 获取period_stock的值并存储到变量 String periodStock = period.getString("period_stock"); vars.put("period_stock_" + i + "_" + j, periodStock); } } ``` 在上面的示例代码中,我们首先将返回的JSON字符串转换为JSON对象。然后,使用循环遍历嵌套的ticket_periods和periods数组,并使用getString方法获取period_stock的值。最后,将每个period_stock的值存储到变量中,以便后续在JMeter中使用。 可以根据需要进行适当的修改和扩展,以满足实际的参数化需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [jmeter使用beanshell断言获取复杂的json字符串参数值](https://blog.youkuaiyun.com/wx17343624830/article/details/127466391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值