Jmeter(4)Beanshell获取响应体的某一字段

一般,提取请求的响应体某个字段时可以采用正则提取器、边界提取器、json提取器等等,操作比较简单。
除此之外,还可以使用Beanshell后置处理器提取响应体的字段值,将json格式的响应体为字符串类型的内容转换为JSON对象,从而利用JSON对象的方法轻松的得到我们期望的值。

前提
需要提前下载好json.jar插件,然后将该jar包放入jmeter安装目录/lib/ext下。

请求返回报文如下

{	"code": 0,
	"success": true,
	"message": "成功",
	"data": {
		"amount": 8000,
		"SpuIdlist": [{
			"SkuId": 22044,
			"name": "iphone13"},
			{"SkuId": 22045,
			"name": "huawei"}]
			}
}

取data下的amount
思路:

  1. new一个JSONObject对象
  2. 利用对象的get(“字段”)方法获取字段内容,获取的类型根据实际获取的内容决定,String、int、数组等都有可能
  3. 继续获取下一个层级data下面amout的值,每一个层级间用点 . 表示,由于amount值为整型,打印时要转换成String类型
import org.json.*;   //导入org.json包

String Response = prev.getResponseDataAsString();    //获取响应数据Response
log.info("响应体数据:" + Response);

JSONObject responseJson = new JSONObject(Response);  //整个Response作为JSON对象
success = responseJson.get("success");        //通过对象的get("字段")方法获取字段内容
log.info("响应code字段:" + success);
amount= responseJson.get("data").get("amount");
log.info("响应amount字段:" + amount.toString());

如果需要继续获取SpuIdlist数组的话,
方法1:

接上文
amount= responseJson.get("data").get("SpuIdlist");
log.info("响应SpuIdlist数组:" + SpuIdlist.toString());

方法2:

import org.json.*;   //导入org.json包

String Response = prev.getResponseDataAsString();    //获取响应数据Response

JSONObject responseJson = new JSONObject(Response);  //整个响应体Response转化为JSON对象
//通过responseJson对象,按层级获取数组第一个元素的值,直接转换为json对象
JSONObject listJson=(JSONObject)responseJson.get("data").get("SpuIdlist").get(0);
log.info(listJson.get("SkuId"));
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值