【问题标题】:Jmeter JMESPath Extract and converting to an ArrayJmeter JMESPath 提取并转换为数组
【发布时间】:2021-10-27 22:20:19
【问题描述】:

您好,我可以使用 JSONPath 模拟这种情况吗?示例我有多个 City 值,我希望全部提取并将其放在一个数组上。非常感谢您的回复。非常感谢。

[ { “id”:“主要”, “钥匙”:1 }, { “城市”:“洛神花”, “id”:“87”, “状态”:“IL”, “钥匙”:1000 }, { “城市”:“芝加哥”, “id”:“7102”, “状态”:“IL”, “钥匙”:110 }, { “城市”:“皇冠点”, “id”:“7106”, “状态”:“在”, “钥匙”:110038 } ]

截图:

预期输出:

【问题讨论】:

    标签: arrays api jmeter response jmespath


    【解决方案1】:

    这是一种解决方案。 您可以使用 JSON ExtractorJSON JMESPath Extractor 后处理器从 JSON 响应中提取城市。

    您的数据将被提取到一组变量中。

    在 JSON 路径提取器下方添加一个 JSR223 后处理器,并将城市分配给一个数组。您可以通过vars.put('cities',lstCities)与以下其他采样器共享数组

    int cityCount=vars.get("cities_matchNr").toInteger()
    def lstCities =[]
    
    for(i in 1..cityCount){
        lstCities.add(vars.get("cities_" + i))
    }
    vars.putObject("cities", lstCities)
    

    下面将演示如何使用来自后续 JSR223 组件的数组。

    def lstCities=vars.getObject("cities") as String[]
    log.info("Number of cities ${lstCities.size()}")
    
    for(i in 0..<lstCities.size()) {
        log.info("City $i is ${lstCities[i]}")
    }
    

    【讨论】:

      【解决方案2】:

      Groovy 的另一种解决方案

      在请求中添加JSR223 Postprocessor,并添加以下代码以将城市提取到数组中。

      import groovy.json.JsonSlurper
      
      String strResponse=prev.getResponseDataAsString()
      log.info("responseJSON ${strResponse}")
      
      def jsonSlurper = new JsonSlurper()
      def jsonResponse = jsonSlurper.parseText(strResponse)
      def lstCities=jsonResponse.city
      lstCities.removeAll([null])
      
      log.info("Cities ${lstCities.size()}")
      for(i in 0..<lstCities.size()){
          log.info("City ${i.next()} is ${lstCities[i]} ")
      }
      

      【讨论】:

        【解决方案3】:
        1. JSR223 PostProcessor 添加为返回上述 JSON 的请求的子项

        2. 将以下代码放入“脚本”区域:

          vars.put('cities', new groovy.json.JsonBuilder(new groovy.json.JsonSlurper().parse(prev.getResponseData()).findResults{entry -> entry.city}).toPrettyString())
          
        3. 在需要时将生成的值引用为${cities}

        演示:

        更多信息:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-09
          • 1970-01-01
          • 1970-01-01
          • 2019-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多