Jmeter Xpath提取器JSON
我正在尝试使用JMETER XPATH提取器从以下JSON中提取参数roomNo:Jmeter Xpath提取器JSON,json,xpath,jmeter,Json,Xpath,Jmeter,我正在尝试使用JMETER XPATH提取器从以下JSON中提取参数roomNo: */ { "categoryCode": ["I4"], "Response": { "class": "example", "availables": { "available": [ { "Desc": " Middle", "roomNo": "5049" }
*/
{
"categoryCode": ["I4"],
"Response": {
"class": "example",
"availables": {
"available": [
{
"Desc": " Middle",
"roomNo": "5049"
},
{
"Desc": " Middle",
"roomNo": "5062"
}
],
"class": "test"
},
"advisoryInfo": null
},
"storeId": "10251"
}
*/
我使用了以下表达式,但没有成功:
/Response/availables/available[0]/roomNo
$...available[0]
$.Response.availables.available..roomNo[0]
$.Response.availables.available[0].roomNo
这个表达错了吗
更新:
我正在尝试使用插件JSON PATH EXTRATCTOR。我尝试了以下查询,但未成功:
/Response/availables/available[0]/roomNo
$...available[0]
$.Response.availables.available..roomNo[0]
$.Response.availables.available[0].roomNo
更新1:
还有一点需要考虑:我收到的ajax响应以*/开头,这是否会给JSON提取器带来麻烦?我通过查看结果树查看响应
更新2:
我尝试以下方法:
ajax请求后面跟着bash提取器,后面跟着json提取器,但它仍然不起作用
在bash提取器中,我按照建议使用了以下字符串
字符串温度=新Stringprev.getResponseDataAsString;
prev.setResponseDataMP.replaceAll\*/,.getBytes
还有一些问题:
可以看到bash提取器的结果吗?
我应该在json提取器之前声明它应该使用temp变量吗?怎么做?恐怕XPath提取器不允许您解析JSON 您将需要通过设置Libs的“您需要额外服务”来提供 在您的案例中,相关的JSONPath查询如下所示:
$.Response.availables.available..roomNo[0]
查看指南向下滚动到解析JSON以了解更多信息,以及XPath到JSONPath映射表
希望这有帮助
UPD。您可以使用Beanshell后处理器来去除*/位,在这种情况下,JSONPath应该可以正常工作。Beanshell后处理器代码:
String temp = new String(prev.getResponseDataAsString());
prev.setResponseData(temp.replaceAll("\\*/","").getBytes());
确保Beanshell后处理器先于JSONPath提取器 请参阅更新的答案,了解您的*/解决方案尝试解决方案但仍不起作用请参阅Update2更新1,未意识到这是响应的一部分。JSONPath提取器不会使用它,您需要以某种方式删除它们。可以使用调试采样器查看变量值-我看到replaceAll\*/,请仔细检查。它应该用额外的斜杠转义为replaceAll\\*/,因为replaceAll假设regexI最终使用了regex提取器