我试图使用从以下JSON中提取参数roomNo:
*/
{
"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这句话有错吗?
更新:
我尝试使用插件JSON路径EXTRATCTOR。我尝试了以下查询,但没有成功:
$...available[0]
$.Response.availables.available..roomNo[0]
$.Response.availables.available[0].roomNoUPDATE1:
还有一个考虑:我收到的ajax响应从*/开始,这有可能给JSON提取器带来麻烦吗?我通过查看结果树看到响应
UPDATE2:我尝试了以下方法:
ajax请求后面跟着bash提取器,然后是json提取器,但它仍然不起作用。
在bash提取器中,我按照建议使用以下字符串:字符串temp =新字符串(prev.getResponseDataAsString());prev.setResponseData(temp.replaceAll(“*/”,“”).getBytes();
还有一些问题:
有可能看到巴什提取器的结果吗?我应该在json提取器之前声明它应该使用temp变量吗?多么?
发布于 2014-05-29 09:18:54
恐怕XPath Extractor不允许您解析JSON。
您将需要通过JSONPath萃取器提供JMeter插件 (您需要Extras和Libs )。
在您的示例中,相关的JSONPath查询如下所示:
$.Response.availables.available..roomNo[0]查看XPath提取器在JMeter中的应用指南(向下滚动到解析JSON)以获得更多信息,并查看XPath到JSONPath映射表。
希望这能有所帮助。
UPD。您可以使用Beanshell Processor来摆脱*/位,在这种情况下,JSONPath应该可以正常工作。Beanshell PostProcessor代码:
String temp = new String(prev.getResponseDataAsString());
prev.setResponseData(temp.replaceAll("\\*/","").getBytes());确保Beanshell后处理器在 JSONPath Extractor之前运行。
https://stackoverflow.com/questions/23929525
复制相似问题