Jmeter Xpath Extractor JSON

时间:2014-05-29 09:01:24

标签: json xpath jmeter

我正在尝试使用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提取器之前声明它应该使用临时变量吗?如何?

1 个答案:

答案 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之前