如何从同一json节点提取多个(随机)值

时间:2018-12-20 13:08:24

标签: json jmeter jmeter-5.0 post-processor

我正在尝试从JSON响应中捕获多个值,但似乎无法从同一随机节点中获取它们。

我尝试使用“;”将多个变量放置在同一提取器中并且可以正常工作,但是它会随机遍历节点,并且不会从同一个节点中提取我需要的值

enter image description here

来源类似于

[
	{
		"Disabled": false,
		"Group": null,
		"Selected": false,
		"Text": "Text1",
		"Value": "Value1"
	},
	{
		"Disabled": false,
		"Group": null,
		"Selected": false,
		"Text": "Text2",
		"Value": "Value2"
	}
]

我想从2个节点(随机匹配)中的任何一个中获取Text和Value,它们可以使用我可以使用的数组或2个变量。

到目前为止,似乎从一个节点获取价值,而从另一个节点获取文本(在更长的资源中)

所以我想要的结果将是text1和value1或text2和value2,而不是两者的混合。

1 个答案:

答案 0 :(得分:3)

  1. JSR223 PostProcessor添加为返回上述JSON的请求的子代
  2. 将以下代码放入“脚本”区域:

    def json = new groovy.json.JsonSlurper().parse(prev.getResponseData())
    def randomEntry = json.get(org.apache.commons.lang3.RandomUtils.nextInt(0, json.size()))
    vars.put('strBrandID', randomEntry.Value)
    vars.put('strBrandName', randomEntry.Text)
    
  3. 就是这样,您应该能够在需要时将文本/值对称为${strBrandID}${strBrandName}

更多信息: