处理 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。
我在 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。