Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jmeter Xpath提取器JSON_Json_Xpath_Jmeter - Fatal编程技术网

Jmeter Xpath提取器JSON

Jmeter Xpath提取器JSON,json,xpath,jmeter,Json,Xpath,Jmeter,我正在尝试使用JMETER XPATH提取器从以下JSON中提取参数roomNo: */ { "categoryCode": ["I4"], "Response": { "class": "example", "availables": { "available": [ { "Desc": " Middle", "roomNo": "5049" }

我正在尝试使用JMETER XPATH提取器从以下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
$...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提取器