Reputation: 135
I have a Jmeter (version 4.0) test script where I am using json extractor to fetch an array of strings from the response json using $..Names and storing it in a variable groupOfNames. The various names are stored like groupOfNames_1, groupOfNames_2, groupOfNames_ALL.
I need to make POST call next with body as
{
"name1", "name2", "name3" (--actual values--)
}
How can i achieve this using bean shell preprocessor? groupOfNames_ALL gives me all value but like this.... name1, name2, name3 (without quotes surrounding individual names). Please help. Thanks.
Upvotes: 0
Views: 5399
Reputation: 168157
I heard Groovy is the New Black so you can add quotation marks around each of names as simply as:
vars.put('groupOfNames_ALL',vars.get('groupOfNames_ALL').split(',').collect {"\"$it\"" }.join(', '))
Demo:
Also as a gentle reminder: JMeter users are encouraged to use JSR223 Test Elements for any form of scripting since JMeter 3.1
Upvotes: 3
Reputation: 983
Put the below code in your BeanShell PreProcessor:
int matchNr = Integer.parseInt(vars.get("groupOfNames_matchNr"));
for(int i = 1; i <= matchNr; i++){
String Names = vars.get("groupOfNames_" + i);
if(i == matchNr){
vars.put("AllNames", vars.get("AllNames") + "\"" + Names + "\"");
}
else if(i == 1){
vars.put("AllNames","\"" + Names + "\", ");
}
else{
vars.put("AllNames", vars.get("AllNames") + "\"" + Names + "\", ");
}
Then use the variable ${AllNames} in your post as below:
{
${AllNames}
}
Upvotes: 3