在beanshell脚本中提取json值

时间:2018-11-09 05:45:57

标签: java jmeter beanshell

这是我的json,我想使用beanshell脚本提取名字和代码。但是我无法提取值。 请帮助

{  
   "code":"HNYC",
   "message":"Sucess",
   "data":{  
      "Employeid":"TGRDH-887",
      "Perosonal":{  
         "Details":{  
            "firstname":"Sam",
            "id":3566,
            "dob":"23/11/1990",
            "Yearofjoing":"2018",
            "Salary":30000,
            "Address":"New Delhi",
            "City":"Delhi"
         }
      }
   }
}

Beanshell代码:

import com.eclipsesource.json.JsonObject;
String jsonString = prev.getResponseDataAsString();  
JsonObject accountId = JsonObject.readFrom(jsonString); 
String code = accountId.getJSONObject("code");   
print("value "+code);

3 个答案:

答案 0 :(得分:1)

您可以直接从JSONObject获取code值,因为它是JSONObject refer的属性

String code = accountId.get("code");

答案 1 :(得分:0)

JSONObject jsonObject = new JSONObject(jsonString);
JSONObject getData = jsonObject.getJSONObject("data");
JSONObject getPerosonal = getData.getJSONObject("Perosonal");
JSONObject getDetails = getPerosonal.getJSONObject("Details");
Object firstname= getDetails.get("firstname");

System.out.println(firstname);

答案 2 :(得分:0)

首先,您了解JSON Extractor吗?如果不是,请考虑使用它,因为它提供了使用简单的JSONPath查询(例如$..code$.. firstname

)获取JSON数据的可能性

如果您仍然想进行脚本编写,请注意since JMeter 3.1 it is recommended to use Groovy用于任何形式的脚本编写。 Groovy比Beanshell是更“现代”的语言,它支持所有Java新功能,并且在Java SDK上有很多enhancements

其中之一是通过JsonSlurper类的内置JSON支持,因此您可以将代码缩短为:

def json = new groovy.json.JsonSlurper().parseText(prev.getResponseDataAsString())
String code = json.code
log.info(code)

演示:

enter image description here

更多信息: