首页 > 解决方案 > 如何保存 JSON 对象并在另一个请求中使用它?

问题描述

我目前正在尝试设置一些 JMeter 测试计划。我对此很陌生(一周前开始),也没有太多的编程经验,所以我希望你能在这种情况下帮助我。

我已经设置了一些 http 请求并有一些简单的 JSON Extractor 后处理器来保存一些变量并将它们与“${variable}”符号一起使用。

但是现在我需要从响应中保存和修改一个对象,以便在下一个 http 请求中使用它。

我的响应是一个非常大的 JSON 对象,我感兴趣的部分看起来像这样:

{
  "payload": {
    "workspace": {
      "resultInstance": [
       [{"part": "1"...}],
       [{"part": "2"...}],
       ...
       [{"part": "20"...}]
      ]
    }
  }
}

请注意,无论出于何种原因,这些对象 {"part":"1"...} 都在嵌套数组中。而且它们也很大。

我想将这些对象保存在一个变量中,以便在我的下一个 http 请求中使用它们,如下所示:

{
  "instanceChange": {
    "functionChecks": [
      {"part": "1"...},
      {"part": "2"...},
      ...
      {"part": "20"...}
    ]
  }
}

所以我真正想要找到的是一种将所有可能的对象保存在嵌套数组“resultInstance”中并将它们放入非嵌套数组“functionChecks”中的方法。

我已经查看了 JMeter 文档,但由于我的编程背景不佳,我无法找到实现这一点的方法。

我想我需要类似 JSR223 PostProcessor 之类的东西,并且“只需通过 resultInstance-array 并使用 smth。就像这些上的 getObject()”,但我无法弄清楚我需要的代码,以及它是否可以保护变量中的对象在 Jmeter 中。

我非常感谢每一个帮助或建议:)。

提前致谢,

艾克森

标签: jsonjmeter

解决方案


let response ={
  "payload": {
    "workspace": {
      "resultInstance": [
       [{"part": "1"...}],
       [{"part": "2"...}],
       ...
       [{"part": "20"...}]
      ]
    }
  }
};

let requestObj={
  "instanceChange": {
    "functionChecks": [
    ]
  }
};

response.payload.workspace.resultInstance.forEach(myFunction);

 myFunction(item, index) {
requestObj.instance.functionsCheck.push(item[0]);
 }

推荐阅读