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