我在Jmeter中运行一个请求,响应看起来像这样:
{
"Items":[
{
"Available":3,
"Info":[
{
"Sample1":1,
"Sample2":33,
"Sample3":50,
"Sample4":"asd",
"Sample5":88,
"Sample6":null,
"Sample7":null,
"Sample8":null,
"Sample9":35,
"Sample0":35
}
]
}
]
}
我的目标是浏览项目列表(在我的示例中只有一个,但可以有更多)以及是否有'可用'大于0然后从“信息”中保存一些值。变成一个变量,用于下一个请求。
现在我的解决方案是我添加了JSON路径后处理器,然后我将这些值分开:
$.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]
元素,然后处理它以获取我需要的字段?
答案 0 :(得分:1)
我相信您可以使用星号 - *
在单个JSON路径查询中执行此操作 - 它代表通配符,如:
$.Items[?(@.Available > 0)].Info[0].*
参考文献:
答案 1 :(得分:0)
我自己解决了这个问题,然后我完全忘记了这个问题。但是,如果有人遇到同样的问题,我现在将发布解决方案。
我敢肯定,有几种方法可以使用JMeter解决此问题,但是它对我来说用正则表达式操作JSON太复杂了,而且我觉得这有点荒谬,因为有很多不错的工具可以做到这一点。因此,我使用GSON编写了一个Java脚本,将其打包到一个.jar中,并将其添加到JMeter中。