让我保持简单的
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"}
}