小编use*_*590的帖子

杰克逊 - json编码双精度控制精度

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

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

class MyTest
{
  public class MyDoubleSerializer extends JsonSerializer<double[]>
  {
    public void serialize(double[] value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException
    {
      for (double d : value)
      {
        jgen.writeStartArray();
        jgen.writeRaw( df.format( d ) );
        jgen.writeEndArray();
      }
    }
  }

  @Test
  public void test1() throws Exception
  {
    ObjectMapper mapper = new ObjectMapper();
    SimpleModule module = new SimpleModule("MyModule", new Version(0, 1, 0, "alpha"));
    module.addSerializer(double[].class, new MyDoubleSerializer());
    mapper.registerModule(module);

    Map<String, Object> data = new HashMap<String, Object>();
    double[] doubleList = { 1.1111111111D, (double) (System.currentTimeMillis()) }; …
Run Code Online (Sandbox Code Playgroud)

java serialization json jackson

5
推荐指数
1
解决办法
6838
查看次数

标签 统计

jackson ×1

java ×1

json ×1

serialization ×1