Jmeter:解析BeanShell前置处理器中的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

Jmeter:如何使用BeanShell预处理器从响应中提取accountID并将其存储在变量中?我们可以使用JSON或正则表达式来实现这一点

我的回答是:

    {
   "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预处理器将其存储在一个变量中。

我不知道您从哪里得到这段代码,但它看起来像是在使用库,并以一种奇怪的方式使用它,所以

  • 确保minimal-json.jar位于JMeter类路径中
  • 您已重新启动JMeter以拾取.jar
  • 你有所有必要的进口货
  • 此外,您的代码似乎无法正常使用minimal-json-0.9.4.jar,您应该将其修改为:

    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);