杰克逊把所有数字都读成BigDecimal

时间:2017-06-07 09:08:21

标签: java json jackson

我们正在使用Jackson从文件系统中读取json并将其解析为POJO。

POJO

String name;
Map<String,Object> map;
getters/setters

ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
Pojo obj = mapper.readValue(jsonFile, Pojo.class);

问题

当我们在json(地图部分)中有数字时,它们会转换为 Integer Double 。我们希望所有数字(小数和整数)都为Type BigDecimal 所以我尝试使用

  

mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);

但这仅适用于十进制数字。没有可用于将整数转换为BigDecimal的功能。

问题

  1. 我们是否有任何内置功能可以让ObjectMapper读取所有数字到BigDecimal?
  2. 如果我需要编写自定义序列化程序,我是否需要为整个类编写它,或者可以为Map字段编写它?

1 个答案:

答案 0 :(得分:0)

尝试将:BigDecimal:[dps]放在您的json中。例如:

{
  "MY_BIG_D:BigDecimal:0" : 3
}

其中dps =小数位。