我在Jmeter中有一个JSR223采样器,代码如下:
import com.jayway.jsonpath.JsonPath
import org.apache.commons.lang3.RandomUtils
import org.apache.jmeter.samplers.SampleResult
def options = JsonPath.read(prev.getResponseDataAsString(), '$.options')
if(options.size() == "1" || options.size() == "2") {
def randomOption = options.get(0)
def code = randomOption.get("code")
vars.put('code1', code)
def values = randomOption.get('values')
def randomValue = values.get(RandomUtils.nextInt(0, values.size()))
def value = randomValue.get('value')
vars.put('valueF', value)
def options2 = JsonPath.read(prev.getResponseDataAsString(), '$.options')
def randomOption2 = options2.get(1)
def code2 = randomOption2.get("code")
vars.put('code2', code2)
def values2 = randomOption2.get('values')
def randomValue2 = values2.get(RandomUtils.nextInt(0, values.size()))
def value2 = randomValue2.get('value')
vars.put('valueF2', value2)
}
else {
vars.put('no loop','Not enterd into loop')
}
vars.put('counts',new
groovy.json.JsonSlurper().parse(prev.getResponseData()).options.size() as
String)
def size = com.jayway.jsonpath.JsonPath.read(prev.getResponseDataAsString(),
'$.options_available')
if (size == []) {
vars.put('size', 'NonConfigurable')
}
else {
vars.put('size', 'Configurable')
}
我无法在采样器之外获取代码 1 和值 F、代码 2 和值 F2 的值。任何可能的帮助将不胜感激!
尝试修改此行:
def value = randomValue.get('value')
自
def value = randomValue.get('value') as String
同样,对于"代码:
def code = randomOption.get("code") as String
当您遇到JMeter问题时,习惯于查看jmeter.log文件,在大多数情况下,它应该包含足够的故障排除信息。
如果您需要有关该主题的进一步帮助,请使用您尝试解析的完整响应对其进行更新。同时:
- Groovy:解析和生成 JSON
- JayWay JSonPath
- 时髦是新黑
JSONArray 大小应该使用 length()
,更改代码
if(options.length() == 1 || options.length() == 2) {