写一段jmeter beanshell脚本,提取以下接口返回参数里的cellNo的值,返回参数格式:{"code":"0","message":"操作成功","errMsg":null, "data":{ "listObj":[{"id":2505210001220311,"cellNo":"18521593986"},{"id":2505210001220312,"cellNo":"18521593985"} ],"total":2,"data":null,"hasNoMutex":null},"stackTrace":null}
时间: 2025-05-30 15:10:25 浏览: 17
### 使用 JMeter BeanShell 脚本从 JSON 响应中提取 `data.listObj` 中的 `cellNo` 值
当需要从复杂的 JSON 结构中提取嵌套字段时,可以借助 JMeter 的 BeanShell 脚本来实现这一需求。以下是具体的解决方案:
#### 解决方案描述
假设接口返回的 JSON 数据如下所示:
```json
{
"status": "success",
"data": {
"listObj": [
{"id": 1, "cellNo": "A1"},
{"id": 2, "cellNo": "B2"},
{"id": 3, "cellNo": "C3"}
]
}
}
```
为了提取 `data.listObj` 数组中每个对象的 `cellNo` 字段值,可以按照以下步骤编写 BeanShell 脚本。
---
#### 编写 BeanShell 脚本
```java
// 导入必要的类库
import org.json.JSONObject;
import org.json.JSONArray;
// 获取上一步请求的响应数据
String response = prev.getResponseDataAsString();
try {
// 将响应数据解析为 JSONObject 对象
JSONObject jsonResponse = new JSONObject(response);
// 获取 data 列表中的 listObj JSONArray
JSONArray listObjArray = jsonResponse.getJSONObject("data").getJSONArray("listObj");
// 遍历 listObj 数组并提取 cellNo 值
StringBuilder cellNos = new StringBuilder();
for (int i = 0; i < listObjArray.length(); i++) {
JSONObject obj = listObjArray.getJSONObject(i);
String cellNo = obj.getString("cellNo");
// 将提取到的 cellNo 存储到 StringBuilder 中
if (i > 0) {
cellNos.append(",");
}
cellNos.append(cellNo);
}
// 将所有提取到的 cellNo 值保存为 JMeter 变量
vars.put("cellNos", cellNos.toString());
// 打印日志方便调试
log.info("Extracted cellNo values: " + cellNos.toString());
} catch (Exception e) {
// 如果发生异常,则记录错误信息
log.error("Error extracting cellNo from response: " + e.getMessage());
}
```
---
#### 关键点说明
1. **导入类库**:通过 `org.json.JSONObject` 和 `org.json.JSONArray` 来解析 JSON 数据[^1]。
2. **获取响应数据**:使用 `prev.getResponseDataAsString()` 方法读取前一个采样器的响应内容[^3]。
3. **解析 JSON 数据**:将响应字符串转换为 `JSONObject` 并逐步定位到目标字段 `data.listObj`。
4. **遍历数组**:由于 `listObj` 是一个数组,因此需要使用循环逐一访问其中的对象,并提取 `cellNo` 字段的值。
5. **存储变量**:通过 `vars.put("cellNos", cellNos.toString())` 将提取的结果存入 JMeter 变量中,便于后续使用[^2]。
6. **日志记录**:利用 `log.info` 或 `log.error` 输出调试信息或捕获异常信息[^2]。
---
#### 测试与验证
- 在 JMeter 中运行脚本后,可以在日志文件 (`jmeter.log`) 中查看提取的日志信息。
- 使用 `${__P(cellNos,)}` 函数或其他组件(如 Debug Sampler)验证是否成功提取了 `cellNo` 值。
---
###
阅读全文
相关推荐

















