【发布时间】:2021-08-26 12:50:14
【问题描述】:
我正在尝试验证输入有效负载中的日期和日期时间。如果日期或日期时间格式不正确或为空,我必须验证请求并删除该字段。如果格式正确或为空值,它会按预期工作,但如果格式错误,则会抛出错误 "Cannot coerce a :string to a :localdatetime"
如何在 dwl 1.0 (mule3) 中解决此问题
Input:
{
"date1": "2021-02-12 00:00:00",
"date2": "2021-02-12",
"date3": "2021-02-121",
"date4": "2021-024-123 00:00:00",
"date5": "",
"date6": null
}
Expected Output:
{
"date1": "2021-02-12 00:00:00",
"date2": "2021-02-12",
}
code:
%dw 1.0
%output application/java
%function transformDate(dt) (dt as :date {format: "dd/MM/yyyy"} as :string {format: "yyyy-MM-dd"})
%function changeDateTime(cdt) (cdt as :localdatetime {format: "dd/MM/yyyy HH:mm:ss"} as :string {format: "yyyy-MM-dd'T'HH:mm:ss"})
%function isEmpty(value) (value!=null and value!="")
---
{
(date1: changeDateTime(payload.date1) as :date) when (isEmpty(payload.date1)),
(date2: transformDate(payload.date2) as :localdatetime) when isEmpty(payload.date2),
(date3: transformDate(payload.date3) as :localdatetime) when isEmpty(payload.date3),
(date4: changeDateTime(payload.date4) as :localdatetime) when isEmpty(payload.date4),
(date5: transformDate(payload.date5) as :localdatetime) when isEmpty(payload.date5),
(date6: transformDate(payload.date6) as :localdatetime) when isEmpty(payload.date6)
}
【问题讨论】:
-
您的示例中哪种情况失败了?请提供输入和完整输出中的属性名称。
-
@aled 我已经添加了完整的输入和预期的输出。 date3 和 date4 格式不正确,这就是它失败的原因
-
完整的错误消息显示错误是什么,哪个输入与哪个表达式不匹配。那会很有帮助。
-
@aled 错误消息我已经提到过。 "不能将 :string 强制转换为 :localdatetime"
-
但不是“完整”错误消息。我在答案中添加了它,因为它添加到上下文中。
标签: mule mule-studio dataweave mulesoft