Riz*_*ous 4 json jmeter jsonpath
我有这样的结构:
{"payload": {
"Item1": {
"property1": "Sunday",
"property2": "suffering_8890"
},
"Item2": {
"property1": "Monday",
"property2": "misery_0776"
},
"Item3": {
"property1": "Tuesday",
"property2": "pain_6756"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要包含某个子字符串(即“misery”)的 property2 值。最终我只需要 4 位代码,但即使获得完整的值也可以。我可以使用以下方法获取所有 property2 值的列表:
$..property2
Run Code Online (Sandbox Code Playgroud)
这将返回:
Result[0] = suffering_8890
Result[1] = misery_0776
Result[2] = pain_6756
Run Code Online (Sandbox Code Playgroud)
如何过滤它,以便它只给出包含子字符串“misery”的结果?
关于完整值,您可以使用过滤器运算符,例如:
$..[?(@.property2 =~ /misery.*?/i)].property2
Run Code Online (Sandbox Code Playgroud)
演示:
您可以使用正则表达式提取器从变量中提取 4 位数字的值
如果您想一次性完成此操作:
将以下代码放入“脚本”区域
vars.put('misery', ((com.jayway.jsonpath.JsonPath.read(prev.getResponseDataAsString(), '$..[?(@.property2 =~ /misery.*?/i)].property2').get(0) =~ ('(\\d+)'))[0][1]))
Run Code Online (Sandbox Code Playgroud)${misery}根据需要参考提取的值详细信息:Apache Groovy - 为什么以及如何使用它