如何在JMeter的JSON请求中追加字段?批量处理10K JSON文件
问题描述
我们有一个存储了10K个JSON请求载荷的文件,需要通过JMeter逐个发送这些请求,但在发送前要为每个JSON追加指定字段。
追加前的JSON格式:
{ "data": [{ "type": "articles", "id": "1", "attributes": { "title": "JSON:API paints my bikeshed!", "body": "The shortest article. Ever." }, "relationships": { "author": { "data": {"id": "42", "type": "people"} } } }], "included": [ { "type": "people", "id": "42", "attributes": { "name": "John" } } ] }
追加后的目标格式(需添加"Gender": "Male"字段):
{ "data": [{ "type": "articles", "id": "1", "attributes": { "title": "JSON:API paints my bikeshed!", "body": "The shortest article. Ever." }, "relationships": { "author": { "data": {"id": "42", "type": "people"} } } }], "included": [ { "type": "people", "id": "42", "attributes": { "name": "John", "Gender": "Male" } } ] }
实现方案
1. 加载JSON文件
使用JMeter的CSV Data Set Config组件读取存储JSON的文件:
- 将组件添加到线程组下
- 填写
Filename为你的JSON文件路径 - 设置
Variable Names为payload(用于存储每行读取到的JSON内容) - 把
Delimiter设为\n(假设每个JSON单独占一行,若文件是其他分隔方式需对应调整) - 勾选
Allow quoted data,避免JSON中的引号干扰读取逻辑
2. 修改JSON内容
在HTTP请求前添加JSR223 PreProcessor,选择Groovy作为脚本语言(Groovy处理JSON性能更优),写入以下代码:
// 读取原始JSON内容 def originalPayload = vars.get("payload") // 解析JSON为可操作的对象 def json = new groovy.json.JsonSlurper().parseText(originalPayload) // 遍历included数组,为people类型的对象追加Gender字段 json.included.each { item -> if (item.type == "people") { item.attributes.Gender = "Male" } } // 将修改后的JSON转为字符串,存入变量 def modifiedPayload = new groovy.json.JsonBuilder(json).toPrettyString() vars.put("modifiedPayload", modifiedPayload)
3. 配置HTTP请求
在HTTP请求的Body Data中引用修改后的变量:
${modifiedPayload}
这样JMeter就会逐个读取JSON文件中的内容,完成字段追加后再发送请求。如果你的JSON结构有变化,只需调整Groovy代码中对应的字段路径即可。
内容的提问来源于stack exchange,提问作者user3400540
相关产品推荐
相关产品推荐

