java - 在 DataWeave 1.0 中将字符串转换为数字时如何避免指数

标签 java mule dataweave

我正在将存储在有效负载中的字符串“0.0000000”转换为 Data Weave 语言 1.0 中的数字

我尝试payload.Amount as :number

%dw 1.0
%output application/json
---
{
 Amount: payload.Amount as :number when payload.Amount != null
}

我期望最终输出为0.0000000,但我得到0E-7

最佳答案

我认为你的期望是不正确的。根据RFC 4627,0E-7 是一个完全有效的 JSON 数字。 。任何正确的解析器都应该正确处理这个有效数字。与其他语言一样,数字在 JSON 中没有格式属性。只有当它们与字符串相互转换时,才能应用格式。由于这些原因,您无法告诉 DataWeave 使用特定的格式。

现在,如果您遇到导致 0E-7 出现问题的特定问题,请更新说明以添加更多详细信息。

如果设置固定的小数位数可以的话,另一种可能有效的替代方法是采用 https://help.mulesoft.com/s/article/How-to-force-DataWeave-to-return-Long-number 中描述的方法。

示例

%dw 1.0
%output application/json
%function withZeroes(x)  x as :string { format: "#.####" } as :number
---
{
  Amount: withZeroes(0E-7),
  Amount2: withZeroes(0.000),
  Amount3: withZeroes(0.0001),
  Amount4: withZeroes(0.00001)
}

输出:

{
  "Amount": 0,
  "Amount2": 0,
  "Amount3": 0.0001,
  "Amount4": 0
}

关于java - 在 DataWeave 1.0 中将字符串转换为数字时如何避免指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57986373/

相关文章:

apache-camel - 如何为不同的外部服务/应用程序设计/开发集成层或总线

java - 统计 Mule 流处理的请求数

java - 如果组件已经可用,我们是否应该在 Mule 中使用 Java 组件? Mule 性能和优化

dataweave - 骡子 4 : Dataweave 2. 0 : is there any alternative of Java 8 Streams anyMatch() method in Dataweave 2. 0?

java - Spring Webflow 绑定(bind) : Converter - java. lang.IllegalArgumentException : Each converter object must implement one of the Converter . .. 接口(interface)

java - Hibernate 在读取之前永久清除所有现有数据

java - 在 JFreeChart 中使用 JTextField 更新正态分布图

xml - 如何在 Mulesoft Dataweave 中删除 XML 命名空间

java - 仅当某个值出现两次时才从 CSV 中获取最新行

java - Android 与 PC 通过 Socket 进行数据交换