如何用JSR223 PostProcessor解析JMeter的CSV响应为JSON并赋值
解析CSV响应为JSON数组并传递给下一个请求
你可以借助Groovy的CSV解析与JSON转换能力,在JSR223 PostProcessor中完成解析与变量传递,具体实现代码如下:
// 读取HTTP响应的CSV内容 def res = prev.getResponseDataAsString() // 拆分响应为行,跳过第一行表头 def lines = res.split('\n').drop(1) // 构建存储JSON对象的列表 def jsonList = [] lines.each { line -> // 分割每行字段(若字段含逗号/引号,建议用下方严谨解析方式) def fields = line.split(',') if (fields.size() == 3) { def loginItem = [ login_type: fields[0].trim(), username: fields[1].trim(), password: fields[2].trim() ] jsonList.add(loginItem) } } // 转换为JSON字符串并存入JMeter变量 import groovy.json.JsonBuilder def jsonStr = new JsonBuilder(jsonList).toString() vars.put("loginDataList", jsonStr) // 可选:日志打印验证结果 log.info("生成的JSON数据:" + jsonStr)
关键细节补充
- 严谨CSV解析:如果你的CSV字段包含逗号、引号等特殊字符,替换为Groovy内置的
CSVParser处理更可靠:import groovy.csv.CSVParser def parser = new CSVParser() def records = parser.parse(res) def dataRecords = records.drop(1) // 跳过表头 dataRecords.each { record -> def loginItem = [ login_type: record[0].trim(), username: record[1].trim(), password: record[2].trim() ] jsonList.add(loginItem) } - 变量引用方式:下一个请求若需传入整个JSON数组,直接在请求体中使用
${loginDataList}即可;如果要循环处理单个JSON对象,可搭配Foreach Controller,设置输入变量名为loginDataList,输出变量名(如currentLoginItem),再在请求中引用${currentLoginItem}。 - 性能适配:Groovy处理1000+行数据效率足够,无需额外优化。
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

