处理 jsonpath 后处理器结果

Process jsonpath postprocessor result

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

我的目标是遍历项目列表(在我的示例中只有一个,但可以有更多),如果 'Available' 大于 0,则从 [=26= 中保存一些值] 到一个变量中,以便在下一个请求中使用它们。

现在我的解决方案是添加 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]

元素然后对其进行处理得到我需要的字段?

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

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

参考文献:

我自己解决了这个问题之后,我就完全忘记了这个问题。但如果有人遇到同样的问题,我现在会 post 我的解决方案。

我确信有一些方法可以使用 JMeter 解决这个问题,但它对我来说太复杂了,无法使用正则表达式来操作 JSON 而且我觉得这有点荒谬,因为有非常好的工具。所以我使用 GSON 编写了一个 Java 脚本,将其打包到一个 .jar 中并将其添加到 JMeter。