You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter中使用JSON提取器提取bld-appliance-1的最大id方法咨询

解决方案:用JSON Path提取指定name对象的最大id

首先明确:标准JSON Path本身不直接支持聚合函数(比如求最大值),但可以结合具体JSON Path实现工具的扩展功能,或者通过表达式组合、脚本辅助来间接实现,以下是几种可行方案:

方案1:利用支持排序的JSON Path实现(如Jayway JsonPath)

如果使用的是Jayway JsonPath这类支持排序语法的工具,可先过滤出目标对象,再按id降序排序后取第一个结果的id:

$[?(@.name == 'bld-appliance-1')] | sort(@.id, true)[0].id

也可以按id升序排序后取最后一项:

$[?(@.name == 'bld-appliance-1')] | sort(@.id)[-1].id

注:这里的|是Jayway的过滤管道语法,sort()第二个参数true表示降序排序。

方案2:结合脚本语言处理(如Postman、JMeter场景)

若所用JSON Path工具不支持聚合,可先提取符合条件的id数组,再用工具自带的脚本能力计算最大值:

  1. 先用基础表达式提取所有目标id:[?(@.name == 'bld-appliance-1')]..id
  2. 以Postman为例,在Tests脚本中处理:
const data = JSON.parse(responseBody);
const targetIds = data.filter(item => item.name === 'bld-appliance-1').map(item => parseInt(item.id));
const maxId = Math.max(...targetIds).toString();
console.log(maxId); // 输出目标最大id

方案3:使用支持聚合的JSON Path扩展实现

部分扩展版JSON Path(如JSONPath Plus)原生支持聚合函数,可直接用表达式求最大值:

$[?(@.name == 'bld-appliance-1')].id.max()

注意:不同JSON Path工具的语法支持差异较大,实际使用时需根据你所用的工具选择对应方案。

内容的提问来源于stack exchange,提问作者Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:12:29