JMeter v2.13中用jp@gc-JSON Path Extractor实现同级条件提取可行吗?
实现JMeter中同级JSON Path条件提取的方案
没问题呀!完全可以实现同级别的JSON Path条件提取~结合你用的JMeter v2.13和jp@gc - JSON Path Extractor组件,针对你给出的JSON结构,我给你具体的实现方法:
先明确需求场景
你的JSON里views是一个数组,每个数组元素包含id、name、filter等同级字段。假设你想根据某个同级字段的条件(比如name匹配特定值),提取该元素下的其他字段值,这就是典型的同级条件提取场景。
具体JSON Path表达式示例
比如你要提取name为" EBS: EAS: IDC (EAS MBT IDC)"的那个views元素里的filter.id,可以用这个表达式:
$.views[?(@.name == ' EBS: EAS: IDC (EAS MBT IDC)')].filter.id
表达式拆解:
$.views:定位到根节点下的views数组[?(@.name == 'xxx')]:过滤数组中满足条件的元素,@代表当前遍历的数组元素,这里匹配name字段和目标字符串完全一致(注意原JSON里name开头有空格,表达式里要保留).filter.id:获取符合条件的元素下,filter对象的id属性
其他常见条件提取示例
- 如果要根据
canEdit == true过滤,提取对应元素的id:$.views[?(@.canEdit == true)].id - 如果要提取符合条件元素的
filter.name:$.views[?(@.sprintSupportEnabled == true)].filter.name
jp@gc组件配置要点
在jp@gc - JSON Path Extractor里做如下配置:
- 变量名:给提取的值起个标识,比如
target_filter_id - JSON Path表达式:填入上面的JSON Path语句
- 匹配数字:如果只取第一个匹配结果填
1;如果要获取所有匹配项填-1,之后可以通过target_filter_id_1、target_filter_id_2这样的变量访问不同结果 - 默认值:可选,当没有匹配到结果时返回的默认内容
注意事项
- 字符串匹配要完全一致:包括空格、特殊字符,比如原JSON里的
&不需要转义,直接用原字符串即可 - JMeter 2.13搭配的jp@gc组件支持这种过滤语法,如果遇到问题可以检查组件是否是兼容版本
- 如果你的JSON数组里有多个符合条件的元素,匹配数字填
-1就能获取所有结果
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

