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

Jmeter Json Extractor多条件提取:获取符合指定条件的首个id值

在JMeter中用JSON Extractor提取符合条件的第一个id值

没问题,我来帮你搞定这个提取需求!按照下面的步骤操作就能精准拿到你想要的第一个符合Principals.value.type='USER'的id:

1. 添加并配置JSON Extractor

首先,在你的HTTP请求取样器(或其他返回JSON响应的取样器)下面添加一个JSON Extractor:

  • 右键取样器 → 选择「添加」→ 「后置处理器」→ 「JSON Extractor」

然后配置关键参数:

  • 变量名称:填一个你方便后续引用的变量名,比如target_user_id
  • JSON Path 表达式:这是核心,根据你的JSON结构,用这个表达式就能定位到目标id:
    $.content[?(@.Principals.value.type == 'USER')][0].id
    
  • 匹配数字:填1(确保只取第一个符合条件的结果)
  • 默认值:可以填NO_MATCH_FOUND,这样如果没找到符合条件的id,变量会被设为这个值,方便调试排查问题

2. 表达式拆解说明

我把这个JSON Path表达式拆解开,方便你理解和调整(如果你的JSON结构有细微变化的话):

  • $.content:定位到JSON根节点下的content数组(对应你示例里的顶层数组结构)
  • [?(@.Principals.value.type == 'USER')]:过滤content数组中,满足Principals.value.type等于USER的所有对象
  • [0]:从过滤后的结果里取第一个对象
  • .id:提取这个对象的id字段值

3. 示例验证

假设你的完整响应JSON是这样的:

{
  "content": [
    {
      "id": "210A3A-0135-1036-90B8-0A2163",
      "name": "xyy 927",
      "Principals": {
        "value": {
          "type": "ROLE"
        }
      }
    },
    {
      "id": "456XYZ-789AB-012CD-345EF-678GH",
      "name": "user_001",
      "Principals": {
        "value": {
          "type": "USER"
        }
      }
    },
    {
      "id": "987FGH-654DE-321BC-098AB-765CD",
      "name": "user_002",
      "Principals": {
        "value": {
          "type": "USER"
        }
      }
    }
  ]
}

用上面的表达式提取后,target_user_id变量的值就是456XYZ-789AB-012CD-345EF-678GH,也就是第一个符合type='USER'的id。

小提示

如果你的JSON结构里Principals是数组而不是对象,那表达式需要调整成类似$.content[?(@.Principals[*].value.type == 'USER')][0].id,不过根据你的描述,前面的表达式就足够满足需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:26