java – jackson – json编码双精度控制精度

前端之家收集整理的这篇文章主要介绍了java – jackson – json编码双精度控制精度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用double值数组编码复杂的Map结构.
高精度并不重要,输出大小也是如此,因此我试图使用提供的DecimalFormat来获取JSON工具(在本例中为Jackson)来序列化double值.

以下是我最好的镜头,但由于对象映射器没有选择序列化程序来编码数组,因此失败了:

class MyTest
{
  public class MyDoubleSerializer extends JsonSerializer

输出是:

{“test”:[1.1111111111,1.315143204964E12}

我在找什么:

{“test”:[1.32E12,1.11E0]}

有任何想法吗?

此外,我不喜欢生成一个字符串并且写入是原始的 – 我可以将一个StringBuffer输入到DecimalFormat中来执行此操作吗?

谢谢

最佳答案
通过借用Double的内置序列化程序来管理解决这个问题.

这有点像黑客,因为writeRaw()不关心上下文并且不在数组成员之间编写逗号,所以我正在构建Json编写器并调用它的writeValue()方法来处理它.

奇怪的是,这不适用于问题中的示例(再次没有被要求序列化这些双打),但确实对我的真实世界对象起作用,这个对象更复杂.

请享用…

public class JacksonDoubleArrayTest
{
    private DecimalFormat df = new DecimalFormat( "0.##E0" );

    public class MyDoubleSerializer extends org.codehaus.jackson.map.ser.ScalarSerializerBase

猜你在找的Java相关文章