处理jsonpath后处理器结果

时间:2016-11-18 11:50:29

标签: json jmeter jsonpath

我在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]

元素,然后处理它以获取我需要的字段?

2 个答案:

答案 0 :(得分:1)

我相信您可以使用星号 - *在单个JSON路径查询中执行此操作 - 它代表通配符,如:

$.Items[?(@.Available > 0)].Info[0].*

JSON Path Wildcard

参考文献:

答案 1 :(得分:0)

我自己解决了这个问题,然后我完全忘记了这个问题。但是,如果有人遇到同样的问题,我现在将发布解决方案。

我敢肯定,有几种方法可以使用JMeter解决此问题,但是它对我来说用正则表达式操作JSON太复杂了,而且我觉得这有点荒谬,因为有很多不错的工具可以做到这一点。因此,我使用GSON编写了一个Java脚本,将其打包到一个.jar中,并将其添加到JMeter中。