【问题标题】:How to only include a key if the value meets a certain criteria如果值满足特定条件,如何仅包含键
【发布时间】:2019-05-21 17:43:45
【问题描述】:

我有这段 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" 时才会这样做 如果 payload01[30] 等于 "S" 或 "C" 那么它会这样做

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

我这样做的原因是,如果 order_type 不是“C”或“S”,我被要求仅包含 DETAIL 行。

问题是实际的密钥 - order_dtl - 仍然存在,我根本不想要任何东西。

如何使 KEY 有条件?

任何帮助表示赞赏

谢谢

【问题讨论】:

    标签: anypoint-studio dataweave mulesoft


    【解决方案1】:

    你在看的东西叫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     
            }
        })
    }
    

    【讨论】:

    • 抱歉,这是 dw 2 语法。固定为 dw1
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 2016-10-29
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多