处理jsonpath后处理器结果
我在Jmeter中运行了一个请求,其响应如下所示:处理jsonpath后处理器结果,json,jmeter,jsonpath,Json,Jmeter,Jsonpath,我在Jmeter中运行了一个请求,其响应如下所示: { "Items":[ { "Available":3, "Info":[ { "Sample1":1, "Sample2":33, "Sample3":50, "Sample4":"asd", "Sample5":88, "Sample6":null,
{
"Items":[
{
"Available":3,
"Info":[
{
"Sample1":1,
"Sample2":33,
"Sample3":50,
"Sample4":"asd",
"Sample5":88,
"Sample6":null,
"Sample7":null,
"Sample8":null,
"Sample9":35,
"Sample0":35
}
]
}
]
}
$.Items[?(@.Available > 0)].Info[0].Sample1[0];
$.Items[?(@.Available > 0)].Info[0].Sample2[0];
$.Items[?(@.Available > 0)].Info[0].Sample3[0]...
我的目标是浏览项目列表(在我的示例中只有一个,但可以有更多),如果“可用”大于0,则将“Info”中的一些值保存到变量中,以便在下一个请求中使用它们
现在,我的解决方案是添加JSON path后处理器,并在其中分离如下值:
{
"Items":[
{
"Available":3,
"Info":[
{
"Sample1":1,
"Sample2":33,
"Sample3":50,
"Sample4":"asd",
"Sample5":88,
"Sample6":null,
"Sample7":null,
"Sample8":null,
"Sample9":35,
"Sample0":35
}
]
}
]
}
$.Items[?(@.Available > 0)].Info[0].Sample1[0];
$.Items[?(@.Available > 0)].Info[0].Sample2[0];
$.Items[?(@.Available > 0)].Info[0].Sample3[0]...
但很明显,这不是一个很好的解决方案,我也认为如果我不得不多次这样做,这将占用太多的资源
所以我的问题是,是否有可能将
$.Items[?(@.Available > 0)].Info[0]
元素,然后对其进行处理以获取所需的字段?我相信您可以在单个JSON路径查询中使用星号-
*
-表示通配符,如:
$.Items[?(@.Available > 0)].Info[0].*
参考资料:
- 在我自己解决了这个问题之后,我完全忘记了这个问题。但是,如果有人在为同样的问题而挣扎,我现在就发布我的解决方案
我确信有很多方法可以用JMeter解决这个问题,但是用正则表达式处理JSON对我来说太复杂了,而且我觉得这有点可笑,因为有很多很好的工具可以解决这个问题。因此,我使用GSON编写了一个小Java脚本,将其打包到一个.jar中,并将其添加到JMeter中。您想使用单一JSON路径提取器读取所有“Sample*”值吗?@Naveen不,只是其中的一些。@Naveen抱歉,我没有注意到您问题中的“single”一词,我使用多少JSON路径表达式来获取值对我来说并不重要,如果可能的话,我不想在每个表达式中都调用“IsAvailable大于0”复选框。