使用JSON Extractor同时提取关联的id、field_type及allowed_otypes首个值的性能测试脚本问题求助
使用JSON Extractor同时提取关联的id、field_type及allowed_otypes首个值的性能测试脚本问题求助
嗨,我完全懂你的痛点——单独提取这三个值很容易出现“各取各的”导致值不匹配的情况,毕竟它们属于同一个JSON对象,必须保证同时从同一个对象里取值才不会出错。下面我给你具体的解决方案,以性能测试常用的JMeter为例:
核心思路
用单个JSON Extractor同时提取这三个关联字段,通过统一的匹配规则确保它们来自同一个JSON对象,避免单独提取时的错位问题。
具体配置步骤
- 在返回你提供的JSON响应的请求(比如HTTP请求)下方,添加一个「JSON Extractor」(右键请求 → 后置处理器 → JSON Extractor)
- 按以下内容配置:
- JSON Path Expressions(每行一个表达式,对应三个字段):
解释:$.[*].id $.[*].field_type $.[*].allowed_otypes[0]$.[*]表示遍历JSON数组里的所有对象,.id取对象的id属性,.allowed_otypes[0]专门取该数组字段的第一个元素 - Names of created variables(给每个提取的字段指定变量名,用逗号分隔):
field_id,field_type,allowed_otype - Match No.(0 for Random):如果要取第一个对象的三个值,填
1;如果需要遍历所有对象做参数化,填-1;随机取的话填0 - Default Values(可选,用来标记提取失败的情况):
ID_NOT_FOUND,TYPE_NOT_FOUND,OTYPE_NOT_FOUND
- JSON Path Expressions(每行一个表达式,对应三个字段):
后续采样器中使用变量
配置完成后,你就可以在后续的请求中直接引用这三个变量,它们肯定来自同一个JSON对象:
- 引用id:
${field_id} - 引用field_type:
${field_type} - 引用allowed_otypes的第一个值:
${allowed_otype}
比如在HTTP请求的参数里,你可以这样填写:
- 参数名:
id→ 值:${field_id} - 参数名:
field_type→ 值:${field_type} - 参数名:
allowed_otype→ 值:${allowed_otype}
为什么这样能解决问题?
单独提取时,你可能分别对id、field_type写了提取规则,万一响应里的对象顺序变化,或者某个提取器的匹配规则不一致(比如一个取第一个,一个取第二个),就会导致值不匹配。而用同一个JSON Extractor统一配置,所有字段都遵循同一个Match No.规则,就绝对能保证三个变量来自同一个JSON对象。
备注:内容来源于stack exchange,提问作者deepu reddy
相关产品推荐
相关产品推荐

