一、JSON JMESPath Extractor介绍

  1. JSON JMESPath Extractor介绍

JMeter 中的一个后置处理器,用于从 JSON 响应中提取数据;
在这里插入图片描述

  1. 和JSON提取器区别
    JSON提取器:只能提取单个值,随机提取
    JSON JMESPath Extractor:可以对提取的值进行判断

  2. 表达式详解
    (1)点操作符(.)​ - 访问属性

person.name

{"person": {"name": "John", "age": 30}}     // 数据
"John"                                     // 结果

(2)方括号([])​ - 访问数组元素

people[0].name

{"people": [{"name": "John"}, {"name": "Jane"}]}  // 数据
"John"    // 结果

(3)通配符()*​ - 匹配所有元素

people[*].name
{"people": [{"name": "John"}, {"name": "Jane"}]}  // 数据
["John", "Jane"]    // 结果

提示:具体实例

二、示例

  1. 总体结构

在这里插入图片描述

  1. JSON JMESPath Extractor配置
Name of created variables:target_id
JMESPath expressions:data.list[?submitFlag == `false`].id | [0]
Default Values:NOT_FOUND

在这里插入图片描述

  1. 引用

在这里插入图片描述

三、data.list[?submitFlag == false].id | [0]详细解释

  1. 需要"查询"接口返回的未使用过的id
    即“id”值,且“submitFlag==false”
  2. 查询接口返回参数
 {
  "data": {
    "list": [
      {"id": 18071, "submitFlag": true, ...},
      {"id": 18065, "submitFlag": false, ...},  // ← 这个
      {"id": 18063, "submitFlag": false, ...},
      {"id": 18061, "submitFlag": false, ...}
    ]
  }
}
  1. JMESPath 表达式
data.list[?submitFlag == `false`].id | [0]
  1. 详细解释
    (1)data.list
    访问路径:data→ list
    获取到数组:[…]
    (2)[?submitFlag == `false`]
    [? … ]是过滤器表达式
    submitFlag == `false`是过滤条件
    false是布尔值 false(注意是反引号,不是单引号)
    结果:过滤出 submitFlag为 false的对象数组
// 原始
[
  {"id": 18071, "submitFlag": true},
  {"id": 18065, "submitFlag": false},
  {"id": 18063, "submitFlag": false},
  {"id": 18061, "submitFlag": false}
]

// 过滤后
[
  {"id": 18065, "submitFlag": false},
  {"id": 18063, "submitFlag": false},
  {"id": 18061, "submitFlag": false}
]

(3).id
从过滤后的数组中提取 id字段
结果:[18065, 18063, 18061]
(4). | [0]
|是管道符,表示对前面结果进一步处理
[0]取数组的第一个元素
最终结果:18065

四、如何添加JSON JMESPath Extractor

选择线程组中已经添加好的HTTP请求——右键“添加”——后置处理器——JSON JMESPath Extracto
在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐