2017-07-29 31 views
-1

使用Groovy脚本,以从CSV数据集中配置JSON数组我有一个CSV文件和多个记录(逗号分隔),我需要一个Groovy脚本,可以从CSV获取所有数据的和做一个JSON数组和文件以jmeter发送POST请求。以下是我的代码如下。但它只能获取一个记录如何在JMeter的

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

能否请你也张贴的内容变量'vars'是什么? –

+0

变量(JMeter变量)是最常用的组件。它是org.apache.jmeter.threads.JMeterVariables类的一个实例,提供对当前变量的读/写访问,能够枚举/更改现有变量,创建新变量以及获取嵌套属性。 – ejustin

+0

所需的json的外观如何? – Rao

回答

0

假设你有以下CSV文件:

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

演示:

id,first_name,last_name,email,institute_id,category_id,value 
1,john,doe,[email protected],1,1,true 
2,jane,doe,[email protected],2,2,false 

您可以使用下面的Groovy代码将其转换成JSON Array

Groovy CSV to JSON

参考文献:

+0

谢谢@Dmitri。你的解决方案工作.. – ejustin