我正在尝试使用JMETER XPATH Extractor从以下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 PATH EXTRATCTOR。我尝试了以下查询但没有成功:
$...available[0]
$.Response.availables.available..roomNo[0]
$.Response.availables.available[0].roomNo
UPDATE1:
还有一个考虑因素:我收到的ajax响应以* /开头,是否有可能这会给JSON EXTRACTOR带来麻烦?我通过查看结果树
看到了响应UPDATE2: 我尝试以下方法:
ajax请求后跟bash提取器,后跟json提取器但它仍然无法正常工作
在bash提取器中我按照建议使用以下字符串 String temp = new String(prev.getResponseDataAsString()); prev.setResponseData(temp.replaceAll( “\ * /”, “”)的getBytes());
更多问题:
是否可以看到bash提取器的结果? 我应该在json提取器之前声明它应该使用临时变量吗?如何?
答案 0 :(得分:0)
我担心XPath Extractor不会让你解析JSON。
您需要通过JSONPath Extractor提供JMeter Plugins(您需要 Libs Set 的附加功能)。
在您的情况下,相关的JSONPath查询将如下所示:
$.Response.availables.available..roomNo[0]
查看Using the XPath Extractor in JMeter指南(向下滚动到解析JSON )以获取更多信息,并查看XPath到JSONPath映射表。
希望这会有所帮助。
UPD。您可以使用Beanshell Post Processor来删除*/
位,在这种情况下JSONPath应该可以正常工作。 Beanshell PostProcessor代码:
String temp = new String(prev.getResponseDataAsString());
prev.setResponseData(temp.replaceAll("\\*/","").getBytes());
确保Beanshell Post Processor在 JSONPath Extractor之前。