如何使用Groovy脚本在JMeter中生成无键名数组格式Payload
修正JMeter Groovy脚本以生成纯JSON数组Payload
你当前的代码会给数组添加外层"list"键,导致格式不符合要求。要生成纯JSON数组,只需直接将集合转换的结果传入JsonBuilder,不需要额外的键名包裹。
修正后的代码
import groovy.json.JsonBuilder import groovy.json.JsonSlurper // 解析前一个请求的响应数据获取列表(注意原代码变量名是listS,不是lists) def listS = new JsonSlurper().parse(prev.getResponseData()) def jsonBuilder = new JsonBuilder() // 直接将collect生成的数组传入JsonBuilder,无需外层"list"键 jsonBuilder listS.collect { [ test: 123, // 对应目标格式的test字段 number: "welcome", // 对应目标格式的number字段 // 若需使用JMeter变量填充,取消注释以下行并替换固定值 // carrierid: vars.get('carrierid'), // carrierType: vars.get('carrierType'), // cou: vars.get('ean'), // position: vars.get('position'), // taskId: vars.get('taskId'), // OQ: vars.get('OQ') ] } // 将生成的JSON字符串存入JMeter变量 vars.put('requestBody', jsonBuilder.toPrettyString()) log.info('Generated body: ' + vars.get('requestBody'))
关键修改点
- 移除原代码中包裹数组的
"list"闭包结构,直接把collect返回的数组传递给JsonBuilder,生成纯JSON数组格式。 - 修正变量名错误:原代码使用
lists但实际定义的是listS,确保变量引用一致。 - 如需用JMeter变量动态填充字段,取消注释对应代码行,替换固定值即可。
内容的提问来源于stack exchange,提问作者UIExample Practice
相关产品推荐
相关产品推荐

