将CSV转换为hashmap - groovy scripting jmeter

yvfmudvl  于 2024-01-06  发布在  其他
关注(0)|答案(2)|浏览(223)

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

  1. itemId, name, lastname
  2. 12345, n1, ln1
  3. 54321, n2, ln2
  4. 66666, n3, ln3
  5. ....

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

  1. {
  2. "12345": [
  3. " n1",
  4. " ln1"
  5. ],
  6. "54321": [
  7. "n2",
  8. "ln2"
  9. ] .............
  10. }


我的代码在这里

  1. def source = new File('1000items.csv').readLines()
  2. def payload = [:]
  3. source.takeRight(source.size() - 1).each { line ->
  4. payload.put(line.split(',')[0], ----STUCKED HERE----)
  5. }


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

i5desfxk

i5desfxk1#

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

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

字符串
详细信息请参阅:

e1xvtsh3

e1xvtsh32#

  1. def data = '''itemId, name, lastname
  2. 12345, n1, ln1
  3. 54321, n2, ln2
  4. 66666, n3, ln3
  5. '''
  6. //instead if `data` you can use `new File(...)`
  7. def payload = data.readLines()
  8. .tail()
  9. .findAll{it} //filter out empty lines
  10. .collect{it.split(',\\s*')} //split by coma and optional spaces
  11. .collectEntries{ [it[0], [it[1], it[2]]] }
  12. println new groovy.json.JsonBuilder(payload).toPrettyString()

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

展开查看全部

相关问题