JMeter技术问题:通过验证其他值提取对应JSON字段
解决JMeter中根据place_name提取对应icon的问题
以下是针对你的问题的具体解决建议:
修正JSON Path表达式的变量引用
直接在JSON Path中使用${new}可能会因为JMeter的变量解析顺序或字符串格式问题导致匹配失败,改用__jexl3函数处理变量,确保字符串比较的正确性:$..[?(@.place_name == '${__jexl3("${new}",)}')].icon这个写法会自动处理变量的引号包裹,避免因变量值的格式问题导致匹配失效。
验证变量
new的有效性
添加一个Debug Sampler,查看变量new的实际取值,确认它确实是你期望的"Home"(无多余空格、引号或其他特殊字符)。如果new变量为空或取值错误,后续的匹配自然无法成功。检查JSON提取器与For Each Controller的配置
- 确保JSON提取器的作用域覆盖了返回目标JSON的Sampler,且位置在该Sampler之后。
- 当Match No设为
-1时,提取器会生成如abc_1、abc_2的索引变量,在For Each Controller中,需将"输入变量前缀"设置为abc_(注意末尾的下划线),这样控制器才能遍历所有匹配的icon值。
备选方案:通过索引关联提取
如果目标JSON是对象数组,可拆分提取逻辑:- 用第一个JSON提取器提取所有place_name,表达式
$..place_name,变量名place_names,Match No-1 - 用第二个JSON提取器提取所有icon,表达式
$..icon,变量名icons,Match No-1 - 在For Each Controller中遍历
place_names_,使用__V函数关联对应索引的icon:
这样循环时,每个place_name都会对应到同索引的icon值。${__V(icons_${__jm__For Each Controller__idx},)}
- 用第一个JSON提取器提取所有place_name,表达式
内容的提问来源于stack exchange,提问作者Kumaran
相关产品推荐
相关产品推荐

