You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter中如何在Beanshell预处理器替换字符串变量?

解决JMeter Beanshell预处理器中变量未替换的问题

你当前的代码中,字符串里的${origin_encrypted}这类占位符不会被Beanshell自动解析——JMeter的占位符语法仅在元件的参数化输入字段中生效,Beanshell脚本里需要主动通过JMeter内置对象获取变量值。以下是几种可行的解决方案:

方法1:使用vars对象直接获取变量(推荐)

vars是JMeter提供的内置对象,可直接访问JMeter变量,用vars.get("变量名")获取对应值后拼接字符串:

String textToSign = 
"{ \"origin\": \"" + vars.get("origin_encrypted") + "\"," +
"  \"destiny\": \"" + vars.get("destiny_encrypted") + "\"," +
"  \"subject\": \"" + vars.get("subject_encrypted") + "\"," +
"  \"amount\": \"" + vars.get("amount_encrypted") + "\"," +
"  \"softToken\": \"" + vars.get("softToken_encrypted") + "\" }";
log.info("Text To Sign: " + textToSign);

若担心变量不存在导致返回null,可添加默认值:

vars.get("origin_encrypted", "")

方法2:用String.format简化拼接

通过格式化字符串的方式,让代码更简洁易读:

String textToSign = String.format(
    "{ \"origin\": \"%s\", \"destiny\": \"%s\", \"subject\": \"%s\", \"amount\": \"%s\", \"softToken\": \"%s\" }",
    vars.get("origin_encrypted"),
    vars.get("destiny_encrypted"),
    vars.get("subject_encrypted"),
    vars.get("amount_encrypted"),
    vars.get("softToken_encrypted")
);
log.info("Text To Sign: " + textToSign);

方法3:用JSON工具类构建(适合复杂JSON结构)

借助JMeter内置的org.json.JSONObject类构建JSON,避免手动拼接字符串的错误:

import org.json.JSONObject;

JSONObject signJson = new JSONObject();
signJson.put("origin", vars.get("origin_encrypted"));
signJson.put("destiny", vars.get("destiny_encrypted"));
signJson.put("subject", vars.get("subject_encrypted"));
signJson.put("amount", vars.get("amount_encrypted"));
signJson.put("softToken", vars.get("softToken_encrypted"));

String textToSign = signJson.toString();
log.info("Text To Sign: " + textToSign);

注意事项

  • 确保origin_encrypted、destiny_encrypted等变量已在JMeter中定义(如用户定义变量、正则表达式提取器等),否则vars.get()会返回null,最终JSON中会出现"null"字符串。
  • JMeter 5.x及以上版本默认包含org.json包,无需额外导入jar。

内容的提问来源于stack exchange,提问作者Hans López

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:47:03