【问题标题】:DateWeaver date field conversion not working - MuleDateWeaver 日期字段转换不起作用 - Mule
【发布时间】:2015-11-25 21:55:27
【问题描述】:

在 DataWeaver 文档 10.8 中。 Changing the Format of a Datehttps://developer.mulesoft.com/docs/dataweave#_date_time_operations

Below is the transform 

 %dw 1.0
 %output application/json
 %type mydate = :string { format: "YYYY/MM/dd" }
 ---
{
formatedDate1: |2003-10-01T23:57:59| as :mydate,
formatedDate2: |2015-07-06T08:53:15| as :mydate
}

在 dataweaver 预览中,它看起来与预期的响应一样好(更改了日期格式)。 我在文件组件中进行响应,但它没有以提到的格式转换日期(也在 dataWeaver 之后保留记录器,而不是预期的响应)。

得到如下响应

{
"formatedDate1": "2003-10-01T23:57:59",
"formatedDate2": "2015-07-06T08:53:15"
 }

我还有其他疑问,这里我们在织布器中硬编码日期。如果假设我们从 Input 参数中获取日期字段,我们是否需要将该字段包装在 || 中。下面的例子,它会工作吗

    %dw 1.0
    %output application/json
     %type mydate = :string { format: "YYYY/MM/dd" }
    ---
    {
     formatedDate1: |payload.dateField1| as :mydate,
     formatedDate2: payload.dateField1 as :mydate
    }

以上似乎对我不起作用。请告诉我正确的用法。 提前致谢

【问题讨论】:

    标签: mule mule-studio mule-component mule-el dataweave


    【解决方案1】:

    试试这个:

    %dw 1.0
    %output application/json
    %type mydate = :date { format: "yyyy/M/d" }
    ---
    {
      formatedDate1: |2003-10-01T23:57:59| as :mydate,
      formatedDate2: |2015-07-06T08:53:15| as :mydate
    }
    

    输出:

    {
      "formatedDate1": "2003-10-01",
      "formatedDate2": "2015-07-06"
    }
    

    区别在于:string:date:的数据类型:

    %type mydate = **:date** { format: "yyyy/M/d" }
    

    结果似乎没有更改为/。这可能是一个错误。

    【讨论】:

    • 谢谢!!正确的应该是一个错误!你对我的另一个查询有什么想法吗?如何从 inputField 传递日期字段,而无需在转换中对其进行手动编码。希望你正确地回答了我的问题。
    • 是的,我明白了。这也是一个限制,因为我在 Dataweave 中找不到任何解析器来将文本 formatDate1 转换为:date。也许您可以尝试将 JSON 解组为 pojo(json 到 Object,返回类包含两个日期字段。)然后将其添加为 dataweave 中的输入,即添加到其元数据中。
    • 如果DataWeaver能直接提供功能就好了。
    • 当然,您可以在 Jira 中创建错误报告并请求该功能。
    【解决方案2】:
     %dw 1.0
     %output application/json
     %type mydate = :string { format: "YYYY/M/d" }
     ---
    {
    formatedDate1: |2003-10-01T23:57:59| as :mydate,
    formatedDate2: |2015-07-06T08:53:15| as :mydate
    }
    

    试试这个

    【讨论】:

    • 试过了。只能在预览中看到正确的响应。但在文件输出中,dataweaver 中打印的同样是响应。我是否需要更改 DataWeaver 的任何配置设置(但没有这样的设置)。
    猜你喜欢
    • 2022-11-22
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多