json - 在 Jmeter 中动态使用 Groovy 将 csv 解析为 json
问题描述
我有.csv
name,capital,zone,code,address,city,zip,state,phone,email
Test City,false,America,us,Address line 2,New York,10002,NY,(+1) 111-111-1112,pteset@email.com
我所做的
import groovy.json.JsonBuilder
def json = new JsonBuilder()
json {
name vars.get("name")
capital vars.get("capital")
zone vars.get("zone")
code vars.get("code")
address vars.get("address")
city vars.get("city")
zip vars.get("zip")
state vars.get("state")
phone vars.get("phone")
email vars.get("email")
}
sampler.addNonEncodedArgument("",json.toPrettyString(),"")
sampler.setPostBodyRaw(true)
但是 csv 可以包含多个行,而不是每次都需要来自 csv 的所有行
所以,我需要一些变量,它将为循环设置一些计数器,从 csv 读取 counter=rows 并返回 JSON
尝试在这里找到解决方案,但我在 Groovy 中的菜鸟时总是遇到语法问题(
结果,它应该是 1 个请求,1 个有效负载,具有多个项目 = 来自 csv 的行
解决方案
您将无法使用 CSV 数据集配置来实现此目的,您必须以编程方式解析 CSV 文件,例如:
def rows = 2 // how many rows you need to collect from the CSV
def entries = []
1.upto(rows, { index ->
def values = new File('/path/to/your/file.csv').readLines().get(index).split(',')
def entry = [:]
entry.put('name', values[0])
entry.put('capital', values[1])
entry.put('zone', values[2])
entry.put('code', values[3])
entry.put('address', values[4])
entry.put('city', values[5])
entry.put('zip', values[6])
entry.put('state', values[7])
entry.put('phone', values[8])
entry.put('email', values[9])
entries.add(entry)
})
def json = new groovy.json.JsonBuilder(entries)
更多信息:
推荐阅读
- react-native - 如何修复 vue 原生核心版本错误?
- typescript - TypeScript:如何从另一个 scipt 访问变量?
- python - 将一列 unix 时间戳转换为日期
- javascript - 如何使用扩展运算符在发布请求中传递数据
- assembly - 组装为什么 lea 快?
- python - 如何将范围对象从 xlwings 函数返回到 Excel,以便在公式中使用?
- tensorflow - Tensorflow DataSet Shuffle 影响验证训练的准确性和模棱两可的行为
- python - 从基于条件过滤的行组合中进行选择 - 口袋妖怪数据
- c - c for 循环而不是 if 语句
- python - Python - 如何在窗口中显示透明图像?