1

Currently need to create json payload as post in jmeter using jsr223 pre/post

Below is the response :

{
  "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"
        }
      ]
    }
  ]
}

Would like to create a json payload as below:

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

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

In this carrier id , cou and Task id are dynamic objects and objects will increase or decrease based on the previous request. i.e it may have 1 or 50... So need create a json payload which is dynamic and can handle if the objects in "tasks": [ increase or decreases.

Thanks in advance any kind of help is very much appreciated.

Jsr223 was able to make payload with 1 object in array :

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'))

0 Answers0