如何确保JSON提取器始终从响应中获取正确的值?

时间:2017-06-13 10:02:19

标签: json jmeter

我正在使用JSON提取器来解析响应,但有时响应在给定索引中返回一个空值,那时我想确保我们移动到另一个索引以获得正确的值。

例如我的JSON路径表达式是

===

当应用程序在0索引中返回一个空值时,那时我得到了JSON提取器中提到的默认值,而不是我想要的是每当我的脚本返回0索引的空白值时,脚本应该搜索下一个索引中的值即1.因此,当$ .CM [0] .id无法获得该值时,应用程序应搜索$ .CM [1] .id并获得响应。

我的方法应该是什么?我应该使用某种bean shell脚本还是应该尝试使用if controller?

1 个答案:

答案 0 :(得分:1)

我建议您切换为JSR223 PostProcessorGroovy语言。

  1. 将JSR223 PostProcessor添加为返回JSON响应的请求的子代
  2. 将以下代码放入"脚本"面积:

    def ids = new groovy.json.JsonSlurper().parse(prev.getResponseData()).CM.ID
    
    ids.eachWithIndex { id, i ->
        log.info('Trying id: ' + i)
        if (id.size() > 0) {
            log.info('Found non-empty ID: ' + id)
            vars.put('ID', id)
            return true
        }
    }
    
  3. 上述代码会将非空ID值(如果有)放入ID JMeter变量,您可以将提取的值引用为${ID}${__V(ID)}如果需要。

  4. 参考文献: