I dont have much experience in using JSONSlurper in Groovy and I have below payload:
{
"header": {
"quoteType": "YQT",
"salesOrg": "2040",
"channel": "02",
"atpMethod": "01",
"distributionChannel": "00",
"division": "00",
"deliveryDateHeader": "2022-10-08T00:00Z",
"isCompleteDeliveryRequired": "",
"shippingCondition": "01",
"pricingDate": "2022-09-02T08:56Z",
"currencyCode": "EUR"
},
"partner": [
{
"partnerNumber": "131761",
"partnerFunction": "SP"
},
{
"partnerNumber": "131762",
"partnerFunction": "WE"
},
{
"partnerNumber": "131761",
"partnerFunction": "RE"
}
],
"materials": [
{
"materialNumber": "29221136",
"requestedDeliveryDate": "2022-10-08T00:00Z",
"deliveryGroup": 0,
"isPartialDeliveryAccepted": "",
"deliveryPlant": null,
"deliveryStorageLocation": null,
"quantity": 1,
"unitOfMeasure": null,
"deliveryPriority": null,
"uomType": "Sales Unit of Measurement"
},
{
"materialNumber": "29233777",
"requestedDeliveryDate": "2022-10-08T00:00Z",
"deliveryGroup": 0,
"isPartialDeliveryAccepted": "",
"deliveryPlant": null,
"deliveryStorageLocation": null,
"quantity": 1,
"unitOfMeasure": null,
"deliveryPriority": null,
"uomType": "Sales Unit of Measurement"
}
]
}
How can I count the total number of "materialNumber"? I have also a code (please check below) but my code does not seem to work as the count is always 0 whenever I run it and I am not also sure on what is wrong.
import com.sap.gateway.ip.core.customdev.util.Message
import groovy.json.JsonSlurper
def Message countMATNR(Message message) {
def reader = message.getBody(InputStream)
def jsonIN = new JsonSlurper().parse(reader)
def property_matnrCounter = 0
jsonIN.materialNumber.each { materials ->
if (materials.materialNumber?.trim() && materials.materialNumber != 'null') {
property_matnrCounter++;
}
}
message.setProperty("numberOfMaterial", property_matnrCounter)
return message;
}