Как включить ключ, только если значение соответствует определенным критериям - PullRequest
0 голосов
/ 21 мая 2019

У меня есть этот фрагмент кода Dataweave

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

Этот код выведет следующие данные

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

Но он будет делать это только если payload01 [30]! = "S"или" C "Если полезная нагрузка01 [30] равна" S "или" C ", тогда она делает это

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

Причина, по которой я это сделал, заключается в том, что меня попросили включить только ДЕТАЛИстрока, если order_type не "C" или "S".

Проблема в том, что фактический ключ - order_dtl - все еще присутствует, и я вообще ничего не хочу там.

Как мне сделать КЛЮЧ условным?

Любая помощь оценена

Спасибо

1 Ответ

0 голосов
/ 21 мая 2019

То, что вы ищете, называется условные элементы

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     
        }
    })
}
...