将CSV转换为hashmap - groovy scripting jmeter

yvfmudvl  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(61)

我已经创建了一个动态的xml请求负载,我从CSV文件中提取了一些数据。现在我很难将CSV行和列转换为hashmap,因为我对Groovy脚本有点陌生。
我的CSV看起来像这样

itemId, name, lastname
12345, n1, ln1
54321, n2, ln2
66666, n3, ln3
....

字符串
我想达到的是这样的

{
    "12345": [
        " n1",
        " ln1"
    ],
    "54321": [
        "n2",
        "ln2"
    ] .............
}


我的代码在这里

def source = new File('1000items.csv').readLines()
def payload = [:]

source.takeRight(source.size() - 1).each { line ->
    payload.put(line.split(',')[0], ----STUCKED HERE----)
}


PS.我遵循这个指南,但我坚持建立散列表部分
Jmeter SOAP parameterization with dynamically changing tag blocks

i5desfxk

i5desfxk1#

只需要传递一个List作为第二个参数,并使用当前行的剩余值填充它。
类似于:

source.takeRight(source.size() - 1).each { line ->
    def entry = line.split(',')
    payload.put(entry[0], [entry[1], entry[2]])
}

字符串
详细信息请参阅:

e1xvtsh3

e1xvtsh32#

def data = '''itemId, name, lastname
12345, n1, ln1
54321, n2, ln2
66666, n3, ln3
'''

//instead if `data` you can use `new File(...)`
def payload = data.readLines()
       .tail()
       .findAll{it}                 //filter out empty lines 
       .collect{it.split(',\\s*')}  //split by coma and optional spaces
       .collectEntries{ [it[0], [it[1], it[2]]] }

println new groovy.json.JsonBuilder(payload).toPrettyString()

字符串
你可以在这里找到所有groovy List方法:
https://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/List.html

相关问题