小数位数超过6的数字将转换为指数形式



让我保持简单的

Input:
{
"latitude": 0.0000000,
"longitude": 0.00000000
}

dw代码:

output application/json
---
{
location: {
"lat": payload.latitude,
"long": payload.longitude
}
}

预期结果:

{
location: {
"lat": 0.00000000,
"long": 0.00000000
}
}

实际结果:

{
location: {
"lat": 0E-8,
"long": 0E-8
}
}

此外,

该代码适用于0.00000000以外的输入。我观察到,如果小数大于6位,并且所有数字都是0,它会将数字转换为指数。

问题实际上是您似乎要求JSON数字具有特定的格式。JSON没有定义数字的格式。还要考虑到有些事情有待实现,比如表示数字的精度和限制。看见https://www.rfc-editor.org/rfc/rfc7159#page-6或https://www.json.org/json-en.html一些规格。

我的理解是,任何合理的JSON实现都是可互操作的,那么0.00000000和0E-8应该被同等接受,但你不应该期望能够选择一种格式而不是另一种格式。我不知道为什么它不只输出0。它也应该被接受为相同的值。

payload.latitude as String {“format”:”0.0000000”},您可以将其输出为application/java

使用json对象更新

%dw 2.0
output application/json
---
location: {
"lat": payload.latitude as String {"format":"0.0000000"},
"long": payload.longitude as String {"format":"0.0000000"}
}

最新更新