Mule dataweave:将十进制转换为整数

时间:2016-05-17 15:37:34

标签: mule dataweave

我想使用Dataweave将小数(78.22)转换为整数(78)。

<root>
<MoneyAmountRequired>78.22</MoneyAmountRequired>
</root>

我尝试如下,如果我添加默认值0

则不起作用
moneyAmountRequired: payload.root.MoneyAmountRequired as :number{format: "0"} default 0 

有人可以指出为什么当默认值为0时它不起作用。

谢谢!

8 个答案:

答案 0 :(得分:2)

使用dataweave的floor函数。

{
    root: {
        MoneyAmountRequired: floor payload.root.MoneyAmountRequired
    }
}

答案 1 :(得分:0)

您可以尝试以下方法: -

moneyAmountRequired: payload.root.MoneyAmountRequired as :string {format: "0"}as :number default 0

在这里,您需要先将其转换为字符串as :string,然后转换为数字as :number 这是它似乎工作的唯一方式!!
参考: - Mule Dataweave format :number

答案 2 :(得分:0)

尝试myvalue:removeDecimal(28.23)

答案 3 :(得分:0)

这对我有用。

moneyAmountRequired: payload.root.MoneyAmountRequired as :number {format: "##,##"} as :string {format: "##"} as :number

希望这有帮助。

答案 4 :(得分:0)

检查一下: %dw 1.0 %输出应用程序/ java

%var regex = /(。\ d +?)0+ \ b /

数据用&#34;&#34;

替换正则表达式

答案 5 :(得分:0)

((payload.root.MoneyAmountRequired as :string) splitBy '.')[0] as :number

如果您更喜欢使用某个功能,那么:

%function truncateDecimals(d) ((d as :string) splitBy '.')[0] as :number when d != null otherwise d
---
{value: truncateDecimals(payload.root.MoneyAmountRequired)}

答案 6 :(得分:0)

在格式化数字之后,它确实是一个字符串,但是您将其默认为数字0而不是将其默认为字符串“0”。但是,如果'as:number'在变量为null时没有失败,那就足够了,这首先是你需要默认值的原因。因此,在将其转换为数字之前将其默认为:

moneyAmountRequired: (payload.root.MoneyAmountRequired default "0") as :number{format: "0"}

希望这会回答你关于默认0无效的问题。

答案 7 :(得分:-1)

将此用于

%dw 1.0

%输出应用程序/ json

{     value:moneyAmountRequired:floor payload.root.MoneyAmountRequired as:number default 0 }