Jmeter:JSON响应操作并传递到下一个http请求

Jmeter:JSON响应操作并传递到下一个http请求,json,jmeter,load-testing,stress-testing,jmeter-5.0,Json,Jmeter,Load Testing,Stress Testing,Jmeter 5.0,我得到了来自HTTP GET请求的JSON文件响应,我希望使用该JSON并将其传递给下一个HTTP请求。我得到了以下回应数据 { "apiInfo": { "id": "23143", "name": "bookkeeping", "state": "used", "data": "15893712000000" }, "apiDetails": [ { "bookName": "abc", "

我得到了来自HTTP GET请求的JSON文件响应,我希望使用该JSON并将其传递给下一个HTTP请求。我得到了以下回应数据

{
  "apiInfo": {
      "id": "23143",
      "name": "bookkeeping",
      "state": "used",
      "data": "15893712000000"
  },
  "apiDetails": [
     {
        "bookName": "abc",
        "state": "old",
        "noOfTimesUsed": "53"
        "additionalParam"{
            "name": "abc",
            "id": "123"
        }
    },
    {
        "bookName": "def",
        "state": "new",
        "noOfTimesUsed": "5",
        "action": "keep"
        "additionalParam"{
            "name": "def",
            "id": "456"
        }
    },
    {
        "bookName": "xyz",
        "state": "avg",
        "noOfTimesUsed": "23"
        "additionalParam"{
            "name": "ghi",
            "id": "789"
        }
    },
    {
        "bookName": "pqr",
        "state": "old",
        "noOfTimesUsed": "75",
        "action": "discard"
        "additionalParam"{
            "name": "jkl",
            "id": "012"
        }
    }
  ]
}
我想使用JSON响应中的“apiInfo”和“apiDetails”部分并操作其数据。正如您所注意到的,一些数组字段中有属性“action”,而另一些则没有。我想确保数组中的所有字段都有此数据,并被指定为“action”:“keep”。此外,我还想从apiInfo中添加“id”,从apiDetails本身的additionalParams中添加“name”。我想要的最终结果有点像这样

"apiDetails": [
   {
      "id": "23143",
      "bookName": "abc",
      "state": "old",
      "noOfTimesUsed": "53",
      "action": "keep",
      "name":"abc"
   },
   {
       "id": "23143",
       "bookName": "def",
       "state": "new",
       "noOfTimesUsed": "5",
       "action": "keep",
      "name":"def"
   },
   { 
       "id": "23143",
       "bookName": "xyz",
       "state": "avg",
       "noOfTimesUsed": "23",
       "action": "keep",
      "name":"ghi"
   },
   {
       "id": "23143",
       "bookName": "pqr",
       "state": "old",
       "noOfTimesUsed": "75",
       "action": "keep",
      "name":"jkl"
    }
  ]
我一直在尝试使用JSR223采样器,并且一直在努力使用它。事情有点复杂,我需要帮助。注:我曾尝试使用javascript代码按预期操作结果,但没有成功

请帮忙

谢谢,希德

  • 作为返回上述JSON的请求的子级添加
  • 将以下代码放入“脚本”区域:

  • 就是这样,您应该能够在需要时将生成的请求引用为
    ${request}

  • 更多信息:


    谢谢你的回答,我已经编辑了这个问题,现在我只能使用嵌套JSON以及从不同的JSON块中提取和放置。请帮忙。
    def apiDetails = new groovy.json.JsonSlurper().parse(prev.getResponseData()).apiDetails
    
    apiDetails.each { apiDetail ->
        apiDetail.put('action', 'keep')
    }
    
    vars.put('request', new groovy.json.JsonBuilder(apidetails: apiDetails.collect()).toPrettyString())