Mule数据编织格式:数字

Mule数据编织格式:数字,mule,anypoint-studio,dataweave,Mule,Anypoint Studio,Dataweave,我遇到了一个问题,试图将字符串解析为双倍。这是一个示例代码,它返回的是一个整数而不是类型:double有什么想法吗 { "data": "22" as :number { format: "##.##" } } 我认为这更多是为了格式化字符串。对于小数点,请尝试以下操作: { "data": "22" as :number {format: ".00"} } 这个,也只有这个,对我有效 %dw 1.0 %output application/json --- {

我遇到了一个问题,试图将字符串解析为双倍。这是一个示例代码,它返回的是一个整数而不是类型:double有什么想法吗

{
    "data": "22" as :number { format: "##.##" }
}

我认为这更多是为了格式化字符串。对于小数点,请尝试以下操作:

{

    "data": "22" as :number {format: ".00"}

}

这个,也只有这个,对我有效

%dw 1.0
%output application/json
---
{
    data: "22" as :number as :string {format: ".00"} as :number
}
格式似乎只在从数字转换为字符串时添加零。 如果“22”已经是一个数字,你就不需要第一个:数字转换

data: 22 as :string {format: ".00"} as :number
后一个数字转换使其以浮点形式输出。否则,您将得到一个字符串,根据主机区域设置进行格式化

小心。当使用
%output text/json
时,在某些情况下,上述代码将生成22.0而不是22.00。

我使用的是:

%output application/json
%type currency = :string { format: "###,##0.00"} 
%function toLocalCurrency (currency) currency replace "." with "#" replace "," with "." replace "#" with ","
---
{
    usCurrencyWithOneDecimal: 900000.1 as :currency,
    brCurrency: toLocalCurrency(900000.1 as :currency),
    usCurrencyWithTwoDecimal: 900000.12 as :currency,
    usCurrencyWithThreeDecimal: 900000.124 as :currency,
    usCurrencyWithThreeDecimalRounding: 900000.125 as :currency,
    usCurrencyZero: 0 as :currency
}
输出为:

{
  "usCurrencyWithOneDecimal": "900,000.10",
  "brCurrency": "900.000,10",
  "usCurrencyWithTwoDecimal": "900,000.12",
  "usCurrencyWithThreeDecimal": "900,000.12",
  "usCurrencyWithThreeDecimalRounding": "900,000.12",
  "usCurrencyZero": "0.00"
}

这适用于所有输出类型application/json等,但不适用于application/java。我猜你在用什么?