如何在 JSON 中显示带有尾随零的 BigDecimal 数字(而不是字符串)?

sha*_*182 5 java json jackson

在我的表示响应中,我有一个 BigDecimal 类型的字段。它的值是 2.30 但 json 响应将其显示为 2.3 有没有办法也显示尾随零,而不将其显示为字符串?顺便说一句 - 我正在使用杰克逊库。

{
  "version" : 2.3 (needs to be 2.30)
}
Run Code Online (Sandbox Code Playgroud)

Axe*_*elH 6

如果您想让 JSON 保留数字值,则您别无选择,数字不受小数部分中的“0”的影响,因此不会使用它们。仅仅是因为 :

2.3 = 2.30
2.3 = 2.300000
Run Code Online (Sandbox Code Playgroud)

零被简单地忽略。如果你确实需要获得像 2.30 这样的值,你有两种选择,

  1. 使用 aString保存JSON 中的格式化数字
  2. 在客户端格式化该值。

两种解决方案都将使用相同的逻辑:

String.format("%.2f", 2.3); //String: 2.30
Run Code Online (Sandbox Code Playgroud)

区别在于格式化值的那一刻。

笔记:

由于您有一个“版本”字段,因此我会使用 aString因为版本由以 分隔的数值表示.。请参阅 Jackson 的 Maven 仓库:

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

2.9.4不是一个数字。