JMeter-如何使用JSON提取器从一串值中传递单个值

yi0zb3m4  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(156)

在JMeter中,我已经使用JSON提取器从响应中提取了一个字符串值(我通过选中**'Compute Concatenation var'复选框来存储变量的所有示例)。这些值存储在一个名为identifier_ALL**的变量中。它看起来像这样:

identifier_ALL = 123, 456, 789

在上面的例子中,我得到了3个值,但是每个请求的值都不同。我需要将各个值传递到请求的主体,所以我使用了下面的语法:

{"content_id": ["${identifier_ALL}"]}

它将传递如下所示的值:{“内容标识”:[“123,456,789”]}
但我希望id像下面这样传递:

Expected: {"content_id": ["123", "456", "789"]}

我不想将这些值写入CSV文件,然后再从那里提取值,因为我正在为5000个用户运行脚本,这只会增加内存占用率和响应延迟。有没有其他方法可以用来以预期的格式传递值?

kcrjzv8t

kcrjzv8t1#

遗憾的是,这不是使用JSON Extractor可以实现的,您需要:
1.在JSON提取器之后添加JSR223后处理器
1.将以下代码放入“Script”区域:

def rv = new StringBuilder()

1.upto(vars.get('identifier_matchNr') as int, {
    rv.append('"').append(vars.get('identifier_' + it)).append('"')
    if (it as String != vars.get('identifier_matchNr')) {
        rv.append(',')
    }
})

vars.put("identifier_INDIVIDUAL", rv.toString())

1.在下一个请求中使用{"content_id": [${identifier_INDIVIDUAL}]}
在上面的示例中,vars代表JMeterVariables类示例,请查看JavaDoc以了解所有可用的方法和字段,并查看Top 8 JMeter Java Classes You Should Be Using with Groovy文章以了解有关此快捷方式和其他可用于JSR223测试元素的JMeter API快捷方式的更多详细信息。

相关问题