【问题标题】:How to make sure that JSON extractor always gets the proper value from response?如何确保 JSON 提取器始终从响应中获取正确的值?
【发布时间】:2017-06-13 10:02:19
【问题描述】:

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

例如我的 JSON 路径表达式是

$.CM[0].id

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

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

【问题讨论】:

    标签: json jmeter


    【解决方案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)}

    参考资料:

    【讨论】:

      猜你喜欢
      • 2016-04-05
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2019-11-02
      相关资源
      最近更新 更多