Jmeter:解析BeanShell前置处理器中的JSON响应并将其存储在变量中
Jmeter:如何使用BeanShell预处理器从响应中提取accountID并将其存储在变量中?我们可以使用JSON或正则表达式来实现这一点 我的回答是:Jmeter:解析BeanShell前置处理器中的JSON响应并将其存储在变量中,json,jmeter,beanshell,Json,Jmeter,Beanshell,Jmeter:如何使用BeanShell预处理器从响应中提取accountID并将其存储在变量中?我们可以使用JSON或正则表达式来实现这一点 我的回答是: { "address":{ "street1":"6550 Vallejo Street", "street2":"", "city":"Emeryville", "state":"CA", "zipcode":"98456", "country":"Uk
{
"address":{
"street1":"6550 Vallejo Street",
"street2":"",
"city":"Emeryville",
"state":"CA",
"zipcode":"98456",
"country":"Uk"
},
"timezone":"US/Pacific-New",
"reference":"fe_qa001",
"token":"ns7h4rqVZegSZG6yZls6",
"login":"fe_qa001@qa.com",
"accountId":-9223372036762408565,
"firstName":"qa029",
"lastName":"svcqa",
"email":"fe_qa001@qa.com",
"component":[
{
"type":1,
"reference":"12-1",
"version":"1",
"base":"Plastic",
"zipcode":"94556",
"bedsize":"high",
"bed":false,
"componentId":0,
"code":"P5",
"sku":"abcd",
"serial":"1234",
"purchaseDate":1372723200000,
"chamber":2
}
]
}
我是Jmeter的新手。有人能帮我吗。这个要求就像从下面给出的响应中提取帐户ID,然后使用BeanShell预处理器将其存储在一个变量中。我不知道您从哪里得到这段代码,但它看起来像是在使用库,并以一种奇怪的方式使用它,所以
import com.eclipsesource.json.JsonObject;
String jsonString = prev.getResponseDataAsString();
JsonObject accountId = JsonObject.readFrom(jsonString);
vars.put("accountId_BSH",String.valueOf(accountId.getLong("accountId",0L)));
你可以用更简单的方法做同样的事情。Groovy具有内置的JSON支持,因此您不必添加任何.jar。参考Groovy代码:
import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper();
def response = jsonSlurper.parseText(prev.getResponseDataAsString());
vars.put("accountId_BSH", response.accountId.toString());
也许最好的方法是使用现有的。相关配置如下所示:
- 变量名称:
accountId\u BSH
- JSON路径表达式:
$.accountId
我尝试了以下代码,但不起作用:String jsonString=prev.getResponseDataAsString();JsonObject accountId=JsonObject.readFrom(jsonString);JsonArray accountId=accountId.get(1.asObject().get(“accountId”).asString();变量put(“accountId\u BSH”,accountId);