0

I have this piece of Dataweave code

list_of_orders: {
    order: payload map ((payload01 , indexOfPayload01) -> {
        order_dtl: 
        "" when payload01[30] == "S" 
        otherwise
        "" when payload01[30] == "C"
        otherwise
        [{
            data: some_data
        }],
        order_hdr: {
            data: some_data     
        }
    })
}

This code will output the following data

"list_of_orders": {
    "order": [
        {
            "order_dtl": [
                {
                    "data": "some_data"
                }
            ],
            "order_hdr": {
                    "data": "some_data"
            }
        }
    ]
}

But it will only do this if payload01[30] != "S" or "C" If payload01[30] is equal to "S" or "C" then it does this

"list_of_orders": {
    "order": [
        {
            "order_dtl": "",
            "order_hdr": {
                    "data": "some_data"
            }
        }
    ]
}

The reason I have done this is because I have been asked to only include the DETAIL line if the order_type is not "C" or "S".

The problem is that the actual key - order_dtl - is still present and I don't want anything there at all.

How do I make a KEY conditional?

Any help appreciated

Thanks

1 Answers1

0

What you are looking is called conditional elements

list_of_orders: {
    order: payload map ((payload01 , indexOfPayload01) -> {
        (order_dtl: 
        [{
            data: some_data
        }]) when((payload01[30] != "S") and (payload01[30] != "C")),
        order_hdr: {
            data: some_data     
        }
    })
}
machaval
  • 4,969
  • 14
  • 20