【问题标题】:How to extract data from an API and create an array to send to the another API in Jmeter?如何从 API 中提取数据并创建一个数组以发送到 Jmeter 中的另一个 API?
【发布时间】:2021-09-06 17:12:32
【问题描述】:

例子:

API A:

{
   "customer":[
      {
         "name":"Jane",
         "phone":"9999999",
         "email":"jane@test.com"
      },
      {
         "name":"John",
         "phone":"8888888",
         "email":"john@test.com"
      },
      {
         "name":"Joe",
         "phone":"7777777",
         "email":"Joe@test.com"
      }
   ]
}

使用 JSON 提取器,我想获取所有客户的姓名 所以:简、约翰、乔

如何获取这些值并将它们转换为数组

[{"name":"Jane", "name":"John", "name":"Joe"}]

并将其传递给下一个 API?

注意:它必须是动态的,因此 API A 可以显示不同的 2 个名称或 1 个或多个名称,并且需要调整到数组中

【问题讨论】:

  • 映射它们...代码:input.customer.map(v => v.name) 在 chrome 控制台中尝试

标签: arrays json api jmeter


【解决方案1】:

首先你的[{"name":"Jane", "name":"John", "name":"Joe"}]不是一个有效的JSON,你可以check it yourself:

所以我强烈怀疑这是您需要生成的字符串。

所以如果你真的需要构造这个值,你可以这样做:

  1. JSR223 PostProcessor 添加为返回此“客户”数据的请求的子项

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

    def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())
    def payload = new StringBuilder()
    payload.append('[{')
    0.upto(response.customer.size - 1, { index ->
        payload.append('"name": "').append(response.customer[index].name).append('"')
        if (index != response.customer.size - 1) {
            payload.append(',')
        }
    })
    payload.append('}]')
    vars.put('payload', payload as String)
    
  3. 在需要的地方将生成的值引用为${payload}

演示:

更多信息:

【讨论】:

    猜你喜欢
    • 2019-06-17
    • 2021-09-30
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多