2017-07-29 58 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