如何确保JSON提取器总是从响应中获得正确的值?
问题描述:
我正在使用JSON提取器来解析响应,但有时响应会在给定索引中返回一个空值,那时候我想确保我们移动到另一个索引以获取正确的值。如何确保JSON提取器总是从响应中获得正确的值?
例如,我的JSON路径表达式是
$.CM[0].id
当应用程序返回的0指数为空值,那个时候我得到这是在JSON提取提及的默认值,而不是我要的是每当我的脚本返回空值对于0索引,脚本应该搜索下一个索引中的值,即1。因此,当$ .CM [0] .id未能获取该值时,应用程序应该搜索$ .CM [1] .id并获取响应。
我应该怎么做?我应该使用某种bean shell脚本,还是应该尝试使用控制器?
答
我建议切换到JSR223 PostProcessor和Groovy语言。
- 添加JSR223 PostProcessor中作为返回JSON响应
-
将下面的代码为“脚本”区域的请求的小孩:
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 } }
上面的代码就会把一个非空ID值(如果有的话)输入到
ID
JMeter变量中,您将能够在需要时将提取的值作为${ID}
或${__V(ID)}
。
参考文献: