Сборка json полезной нагрузки в Jmeter с использованием пре / постпроцессора Jsr223 - PullRequest
1 голос
/ 17 февраля 2020

В настоящее время необходимо создать json полезную нагрузку в виде записи в jmeter с использованием jsr223 pre / post

Ниже приведен ответ:

{
  "list": [
    {
      "listId": "003566",
      "position": "position01",
      "orderNo": "342455",
      "listTime": "91258",
      "totalCrates": 0,
      "carrier": [
        {
          "carrierid": "000053051",
          "carrierType": "z",
          "carrierStatus": "",
          "totalItem": "0",
          "items": [

          ]
        },
        {
          "carrierid": "000053050",
          "carrierType": "O",
          "carrierStatus": "",
          "totalItem": "0",
          "items": [

          ]
        }
      ],
      "tasks": [
        {

          "taskId": "00374",
          "Quantity": "1",
          "cou": "01015",
          "Type": "F",
          "taskref": "0320",
          "cou": [
            "01015"
          ],
          "manufactureDates": [

          ],
          "shipByDate": "",
          "shipByDateList": [

          ],
          "backendOfferText": "",
          "backendNoteText": "",
          "offerText": "",
          "OrderedQuantity": "1"
        },
        {
          "taskId": "00374",
          "Quantity": "1",
          "cou": "01015",
          "Type": "F",
          "taskref": "0320",
          "cou": [
            "01015"
          ],
          "DiffDates": [

          ],
          "ByDate": "",
          "ByDateList": [

          ],
          "backendNoteText": "",
          "OrderedQuantity": "1"
        }
      ]
    }
  ]
}

Хотелось бы создать json полезную нагрузку как ниже:

    {
    "list": [{
            "carrierid": "@@@",
            "carrierType": "@@@",
            "cou": "@@@",
            "taskId": "@@@",
            "position": "@@@",
            "listId": "@@@",
            "OQ": "@@@"

        },
        {
            "carrierid": "@@@"
            "carrierType": "@@@"
            "cou": "@@@"
            "taskId": "@@@"
            "position": "@@@"
            "listId": "@@@"
            "OQ": "@@@"
        }
    ]
}

В этом идентификаторе носителя, cou и ID задачи являются динамическими c объекты и объекты будут увеличиваться или уменьшаться в зависимости от предыдущего запроса. то есть он может иметь 1 или 50 ... Так что нужно создать полезную нагрузку json, которая является динамической c и может обрабатывать, если объекты в «задачах»: [увеличивать или уменьшать.

Заранее спасибо любой вид помощи очень ценится.

Jsr223 смог создать полезную нагрузку с 1 объектом в массиве:

import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

def listS = new JsonSlurper().parse(prev.getResponseData())
def jsonBuilder = new JsonBuilder()

jsonBuilder {

    "list" lists.collect {
        [
            carrierid: vars.get('carrierid'),
            carrierType: vars.get('carrierType'),
            cou: vars.get('ean'),
            position: vars.get('position'),
            taskId: vars.get('taskId'),
            OQ: vars.get('OQ'),       
        ]
    }
}
vars.put('requestBody', jsonBuilder.toPrettyString())
log.info('Generated body: ' + vars.get('requestBody'))
...