【问题标题】:Prevent Jackson from serializing a float as a double防止杰克逊将浮点数序列化为双精度
【发布时间】:2013-06-09 11:23:08
【问题描述】:

Jackson 似乎在我试图序列化为 JSON 的任何数据结构中将所有浮点数强制转换为双精度数。有什么办法可以避免这种行为?

Float f = 50.1f;
System.out.println(f);                                 // 50.1
System.out.println(f.doubleValue());                   // 50.099998474121094
System.out.println(new ObjectMapper().valueToTree(f)); // 50.099998474121094 -- how to prevent this?

使用 jackson-all-1.9.11.jar。

【问题讨论】:

  • 顺便问一下,为什么是 Jackson 1.9.x?当前版本是 2.2.x...
  • 您尝试过使用FloatSerializer 吗?
  • @fge 在庞大的代码库中工作。无法轻松升级。
  • @TheNewIdiot 谢谢。显然,这肯定会起作用,new ObjectMapper().writeValueAsString() 也一样。
  • 你能用 BigDecimal 代替 Float 吗?

标签: java floating-point jackson


【解决方案1】:

您可以使用自己的自定义 Jackson 序列化程序,如 link 中所述

Java to Jackson JSON serialization: Money fields

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-29
    • 2023-02-20
    • 2012-02-25
    • 2010-12-19
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多