在 Mule 4 DW 2.0 中使用 max() 时处理 null 检查

问题描述 投票:0回答:1

我正在尝试使用 max() 从下面的有效负载中获取最新的结束日期,该方法工作正常,但 endDate 可能为空或者元素本身可能不存在于响应中,因此想知道如何处理在获取最大 endDate 值之前进行 null 检查

输入负载

{
    "cid": "567",
    "payload": {
        "id": "34567",
        "employee": {
            "employType": "PartTime",
            "positions": [
                {
                    "role": "Mulesoft Developer",
                    "startDate": "2023-06-09",
                    "endDate": "2024-02-22"
                },
                {
                    "role": "Senior Mulesoft Developer"
                    "startDate": "2024-02-23",
                    "endDate": "2024-09-30"
                }
            ],
            "Clevel": "987654"
        }
    }
}

下面的DW用于获取最大endDate并在流程中进一步使用。

%dw 2.0
output application/json

var latestEndDate = max(payload.payload.employee.positions.endDate)

---
latestEndDate

输入有效负载,结束日期为空

{
        "cid": "567",
        "payload": {
            "id": "34567",
            "employee": {
                "employType": "PartTime",
                "positions": [
                    {
                        "role": "Mulesoft Developer",
                        "startDate": "2023-06-09",
                        "endDate": ""
                    },
                    {
                        "role": "Senior Mulesoft Developer"
                        "startDate": "2024-02-23",
                        "endDate": ""
                    }
                ],
                "Clevel": "987654"
            }
        }
    }

输入没有结束日期的有效负载

{
            "cid": "567",
            "payload": {
                "id": "34567",
                "employee": {
                    "employType": "PartTime",
                    "positions": [
                        {
                            "role": "Mulesoft Developer",
                            "startDate": "2023-06-09",
                            "endDate": ""
                        },
                        {
                            "role": "Senior Mulesoft Developer"
                            "startDate": "2024-02-23",
                            "endDate": ""
                        }
                    ],
                    "Clevel": "987654"
                }
            }
        }
dataweave mulesoft mule4
1个回答
0
投票

您可以应用过滤器检查来检查空字符串以及不存在的字段

输入

{
    "cid": "567",
    "payload": {
        "id": "34567",
        "employee": {
            "employType": "PartTime",
            "positions": [
                {
                    "role": "Mulesoft Developer",
                    "startDate": "2023-06-09",
                    "endDate": "2024-02-22"
                    
                },
                {
                    "role": "Mulesoft Developer",
                    "startDate": "2023-06-09"
                    
                },
                {
                    "role": "Senior Mulesoft Developer",
                    "startDate": "2024-02-23",
                    "endDate": ""
                }
            ],
            "Clevel": "987654"
        }
    }
}

DW

%dw 2.0
output application/json
var latestEndDate = max(payload.payload.employee.positions.endDate filter (!isEmpty($)))
---
latestEndDate
© www.soinside.com 2019 - 2024. All rights reserved.