Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用beanshell在jmeter中获取json响应_Java_Json_Jmeter_Beanshell - Fatal编程技术网

Java 使用beanshell在jmeter中获取json响应

Java 使用beanshell在jmeter中获取json响应,java,json,jmeter,beanshell,Java,Json,Jmeter,Beanshell,在jmeter响应中,我将javascript和json作为混合响应,从中我必须获取一个json数组,它是items 这是我得到的巨大回应的一部分 在这个响应中,我必须获取getResourceData()中的json数组,而不是任何其他项。 我们怎么能和beanshell assrtion合作 您可以使用提取响应的任何部分。由于需要对特定请求[sampler]的响应执行操作,因此应将其用作该特定请求的子级。所以基本上用 假设你的回答是这样的--- 我已经完成了JSON对象的数组,并添加了一些可

在jmeter响应中,我将javascript和json作为混合响应,从中我必须获取一个json数组,它是
items
这是我得到的巨大回应的一部分

在这个响应中,我必须获取getResourceData()中的json数组,而不是任何其他项。 我们怎么能和beanshell assrtion合作


您可以使用提取响应的任何部分。由于需要对特定请求[sampler]的响应执行操作,因此应将其用作该特定请求的子级。所以基本上用

假设你的回答是这样的---

我已经完成了JSON对象的数组,并添加了一些可能存在的代码。这是我正在做的假设。请检查您的实际回复

DE.APP.task.TaskGrid.getAssignmentData = function () {
            return {"items":[]};
        };

        DE.APP.task.TaskGrid.getResourceData = function () {
            return {"items":[{"STANDARDRATEFORMAT":"0.00","ASSIGNED_HRS":0,"RESOURCE_NAME":"#Buddhika ","COST":"0.00","PERCENTASSIGNED":"100.00","EMAIL":"Buddhika75@mspblank.com","AVAILABLEFROM":"10-May-2011","ALLOCATED_HRS":"1872.00","RESOURCE_ID":36197221,"AVAILABLETO":"31-Mar-2012","calendar":{"exceptions":{},"weekDayHours":{}}}]}
            
            AnotherBlockthatYouCanIDenity
所以你可以有这样的后处理器-


请注意,这可能是不正确的,因为我不确定您得到的答复。请检查您的回复。您还可以在查看结果树侦听器中测试正则表达式。

您可以使用apache StringUtils使用左边界和右边界剪切字符串。您的左边界是清晰的“return{”,但我不确定您的右边界(JSON负载后面的字符串)。使用prev.getResponseDataAsString()将响应负载作为字符串拉入

import org.apache.commons.lang3.StringUtils;
import net.minidev.json.parser.JSONParser;
import net.minidev.json.JSONObject;
import net.minidev.json.JSONArray;

String sInputString =  "return {\"items\":[{\"STANDARDRATEFORMAT\":\"0.00\",\"ASSIGNED_HRS\":0,\"RESOURCE_NAME\":\"#Buddhika \",\"COST\":\"0.00\",\"PERCENTASSIGNED\":\"100.00\",\"EMAIL\":\"Buddhika75@mspblank.com\",\"AVAILABLEFROM\":\"10-May-2011\",\"ALLOCATED_HRS\":\"1872.00\",\"RESOURCE_ID\":36197221,\"AVAILABLETO\":\"31-Mar-2012\",\"calendar\":{\"exceptions\":{},\"weekDayHours\":{}}}]}";

//String sInputString = prev.getResponseDataAsString();

try {
     // Use StringUtils to cut the string between the two
    String sCutString = StringUtils.substringBetween(sInputString, "return {\"items", "]}");
    String sFinalString = "{\"items" + sCutString + "]}";
    log.info("sFinalString=" + sFinalString);

    // Use JSONParser to parse the JSON
    JSONParser parser = new JSONParser(JSONParser.ACCEPT_NON_QUOTE|JSONParser.ACCEPT_SIMPLE_QUOTE); 
    JSONObject rootObject = (JSONObject) parser.parse(sFinalString);
    //JSONObject rootObject = (JSONObject) parser.parse(prev.getResponseDataAsString());

    JSONArray jResourceArray = (JSONArray) rootObject.get("items");

    for (int i=0; i < jResourceArray.size(); i++) {
        log.info(jResourceArray.get(i).toString());
        // You can access individual elements using this
        log.info("RESOURCE_ID=" + jResourceArray.get(i).get("RESOURCE_ID"));
    }


}
catch ( Exception ex) {
    log.info("Exception.." + ex);
}
import org.apache.commons.lang3.StringUtils;
导入net.minidev.json.parser.JSONParser;
导入net.minidev.json.JSONObject;
导入net.minidev.json.JSONArray;
String sInputString=“return{\”items\”:[{“STANDARDRATEFORMAT\”:“0.00\”,“分配的小时数”:0,““资源名”:“,”Buddhika\”,““成本”:“0.00\”,“分配的百分比”:“100.00\”,“电子邮件”:”Buddhika75@mspblank.com\“,”可用时间“:”2011年5月10日“,”已分配时间“:”1872.00“,”资源ID“:36197221,“可用时间“:”2012年3月31日“,”日历“:{\'exceptions\':{},\'weekDayHours\':{}]};
//字符串sInputString=prev.getResponseDataAsString();
试一试{
//使用StringUtils在两者之间剪切字符串
String sCutString=StringUtils.substringBetween(sInputString,“return{\”items“,“]}”);
字符串sFinalString=“{\”项“+sCutString+”]}”;
log.info(“sFinalString=“+sFinalString”);
//使用JSONParser解析JSON
JSONParser=newjsonparser(JSONParser.ACCEPT_NON_QUOTE | JSONParser.ACCEPT_SIMPLE_QUOTE);
JSONObject rootObject=(JSONObject)parser.parse(sFinalString);
//JSONObject rootObject=(JSONObject)parser.parse(prev.getResponseDataAsString());
JSONArray jresourcerray=(JSONArray)rootObject.get(“items”);
对于(int i=0;i
您的响应同时包含javascript和json?您还没有粘贴完整的响应,好吗?响应非常大。因此,我粘贴了部分响应,是的,我的响应包含类似于上面的javascript和json数组。我想在上面的代码中从getResourceData获取“items”。感谢您的帮助。
import org.apache.commons.lang3.StringUtils;
import net.minidev.json.parser.JSONParser;
import net.minidev.json.JSONObject;
import net.minidev.json.JSONArray;

String sInputString =  "return {\"items\":[{\"STANDARDRATEFORMAT\":\"0.00\",\"ASSIGNED_HRS\":0,\"RESOURCE_NAME\":\"#Buddhika \",\"COST\":\"0.00\",\"PERCENTASSIGNED\":\"100.00\",\"EMAIL\":\"Buddhika75@mspblank.com\",\"AVAILABLEFROM\":\"10-May-2011\",\"ALLOCATED_HRS\":\"1872.00\",\"RESOURCE_ID\":36197221,\"AVAILABLETO\":\"31-Mar-2012\",\"calendar\":{\"exceptions\":{},\"weekDayHours\":{}}}]}";

//String sInputString = prev.getResponseDataAsString();

try {
     // Use StringUtils to cut the string between the two
    String sCutString = StringUtils.substringBetween(sInputString, "return {\"items", "]}");
    String sFinalString = "{\"items" + sCutString + "]}";
    log.info("sFinalString=" + sFinalString);

    // Use JSONParser to parse the JSON
    JSONParser parser = new JSONParser(JSONParser.ACCEPT_NON_QUOTE|JSONParser.ACCEPT_SIMPLE_QUOTE); 
    JSONObject rootObject = (JSONObject) parser.parse(sFinalString);
    //JSONObject rootObject = (JSONObject) parser.parse(prev.getResponseDataAsString());

    JSONArray jResourceArray = (JSONArray) rootObject.get("items");

    for (int i=0; i < jResourceArray.size(); i++) {
        log.info(jResourceArray.get(i).toString());
        // You can access individual elements using this
        log.info("RESOURCE_ID=" + jResourceArray.get(i).get("RESOURCE_ID"));
    }


}
catch ( Exception ex) {
    log.info("Exception.." + ex);
}