如何在jmeter中处理提取器的多个匹配

如何在jmeter中处理提取器的多个匹配,jmeter,Jmeter,我使用json路径提取器从json响应中查找多个匹配项。 并且得到了输出: IDType_Extract_1={"contentType":"LIVE","id":103} IDType_Extract_2={"contentType":"CATCH_UP","id":6441631} IDType_Extract_3={"contentType":"MOVIES","id":129} 现在,我想拆分这两个值,并在下一个JMeterHTTP请求中传递任意随机的(contentType,id)对

我使用json路径提取器从json响应中查找多个匹配项。 并且得到了输出:

IDType_Extract_1={"contentType":"LIVE","id":103}
IDType_Extract_2={"contentType":"CATCH_UP","id":6441631}
IDType_Extract_3={"contentType":"MOVIES","id":129}
现在,我想拆分这两个值,并在下一个JMeterHTTP请求中传递任意随机的
(contentType,id)

我应该使用哪个后处理器以及如何提取值

我使用的是beanshell断言和beanshell后处理器,但无法提取它

string[]value=vars.get{“IDType\u Extract\u 1”}

在debug sampler中,变量中没有值。

您应该使用,或者在原始JSON提取器中获取特定值,然后添加到表达式后缀
。contentType

另一个选项是使用exists JMeter变量和
$创建新的
JSON提取器
。contentType
作为表达式:

JSON后处理器使您能够使用JSON-PATH语法从JSON响应中提取数据。这个后处理器非常类似于正则表达式提取器。它必须作为HTTP采样器或具有响应的任何其他采样器的子级放置

  • 您的语法不正确,应该是正确的

    string[]value=vars.get(“IDType_Extract_1”)

  • 您的方法不正确,Groovy提供了一个用于解析JSON的类
    假设所有这些

    • 添加为要参数化的请求的子级
    • 将以下代码放入“脚本”区域:

    • 也就是说,如果需要,请将随机提取的值引用为
      ${contentType}
      ${id}
    演示:

    更多信息:


    感谢您的回答和大量信息链接。它现在正在工作。
      string[] type = value.split{","};
    
    def randomNumber = org.apache.commons.lang3.RandomUtils.nextInt(1, (vars.get('IDType_Extract_matchNr') as int) + 1)
    def entry = new groovy.json.JsonSlurper().parseText(vars.get('IDType_Extract_' + randomNumber))
    vars.put('contentType', entry.contentType)
    vars.put('id', entry.id as String)