gpt4 book ai didi

java - 使用 Jackson 将 float 格式化为定点

转载 作者:行者123 更新时间:2023-12-02 01:58:34 25 4
gpt4 key购买 nike

我搜索了 Jackson 文档,但找不到任何关于 float @JsonFormatpattern 的好文档。

给定一个字段

@JsonProperty("Cost")
private Double cost;

如何让 Jackson 使用 @JsonFormat 将其格式化为十进制格式的四位数精度的定点数?

PS:我知道不应该用 float 来赚钱。请别再讨论了。

最佳答案

您需要为此创建一个自定义序列化程序。类似的东西

 @JsonProperty("amountOfMoney")
@JsonSerialize(using = MySerializer.class)
private Double cost;

public class MySerializerextends JsonSerializer<Double> {
@Override
public void serialize(Double value, JsonGenerator generator, SerializerProvider provider) throws IOException,
JsonProcessingException {
double roundedValue = value*10000;
roundedValue = Math.round(roundedValue );
roundedValue = roundedValue /10000;
generator.writeNumber(roundedValue );
}
}

您可以在这里查看类(class)信息 https://fasterxml.github.io/jackson-databind/javadoc/2.3.0/com/fasterxml/jackson/databind/JsonSerializer.html

舍入部分可能不是最好的。您可以按照自己的喜好进行操作;)使用十进制格式也可以。如果您使用 writeNumber 它会将值打印为结果 Json 中的数字。这就是为什么我将答案从 writeString 更改为使用十进制格式。

如果实现允许,您应该能够使用 @JsonFormat 模式。

Datatype-specific additional piece of configuration that may be used to further refine formatting aspects. This may, for example, determine low-level format String used for Date serialization; however, exact use is determined by specific JsonSerializer

但对于 jackson ,我相信它只适用于约会。

关于java - 使用 Jackson 将 float 格式化为定点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51981707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com