У меня возникла проблема при попытке проанализировать строку, чтобы удвоить это, это был бы образец кода, он возвращает целое число вместо типа: удвоить любые идеи?
{
"data": "22" as :number { format: "##.##" }
}
У меня возникла проблема при попытке проанализировать строку, чтобы удвоить это, это был бы образец кода, он возвращает целое число вместо типа: удвоить любые идеи?
{
"data": "22" as :number { format: "##.##" }
}
Это и только это работает для меня;
%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.
Я думаю, что это больше для форматирования строк. Попробуйте это для десятичных знаков:
{
"data": "22" as :number {format: ".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"
}