我有一个带有多个记录的Csv文件(逗号分隔),我需要一个groovy脚本,可以从csv获取所有数据并生成一个json数组并在jmeter中发送一个POST请求。这是我的代码如下。但它只取一条记录
import groovy.json.*
import groovy.json.JsonBuilder
def jsonBuilder = new groovy.json.JsonBuilder()
jsonBuilder {
id Integer.parseInt(vars.get("id"))
name vars.get("first_name")
last_name vars.get("last_name")
email vars.get("email")
institute_id Integer.parseInt(vars.get("institute_id"))
category_id Integer.parseInt(vars.get("category_id"))
value Boolean.parseBoolean(vars.get("value"))
}
sampler.addNonEncodedArgument("",jsonBuilder.toPrettyString(),"")
sampler.setPostBodyRaw(true)
答案 0 :(得分:2)
假设您有以下CSV文件:
id,first_name,last_name,email,institute_id,category_id,value
1,john,doe,johndoe@example.com,1,1,true
2,jane,doe,janedoe@example.com,2,2,false
您可以使用以下Groovy代码将其转换为JSON Array:
import groovy.json.JsonOutput
def lines = new File('test.csv').readLines()
def keys = lines[0].split(',')
def rows = lines[1..-1].collect { line ->
def i = 0, vals = line.split(',')
keys.inject([:]) { map, key -> map << ["$key": vals[i++]] }
}
log.info(JsonOutput.prettyPrint(JsonOutput.toJson(rows)))
演示:
参考文献: