多于 6 位小数的数字转换为指数形式
Number with more than 6 decimals is converted into exponential form
让我保持简单
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,它将数字转换为指数。
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"}
}
问题实际上是您似乎要求 JSON 数字具有特定格式。 JSON 没有定义数字的格式。还要考虑到一些事情对实现是开放的,比如表示数字的精度和限制。有关某些规格,请参阅 https://www.rfc-editor.org/rfc/rfc7159#page-6 or https://www.json.org/json-en.html。
我的理解是,要使任何合理的 JSON 实现可互操作,那么 0.00000000 和 0E-8 应该被同等接受,但您不应期望能够 select 一种格式优于另一种格式。我不确定为什么它不只输出 0。它也应该被接受为相同的值。
让我保持简单
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,它将数字转换为指数。
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"}
}
问题实际上是您似乎要求 JSON 数字具有特定格式。 JSON 没有定义数字的格式。还要考虑到一些事情对实现是开放的,比如表示数字的精度和限制。有关某些规格,请参阅 https://www.rfc-editor.org/rfc/rfc7159#page-6 or https://www.json.org/json-en.html。
我的理解是,要使任何合理的 JSON 实现可互操作,那么 0.00000000 和 0E-8 应该被同等接受,但您不应期望能够 select 一种格式优于另一种格式。我不确定为什么它不只输出 0。它也应该被接受为相同的值。