如何使用jackson序列化BigDecimal以映射值?

时间:2017-09-19 17:13:29

标签: java serialization jackson

使用jackson版本2.7.3将BigDecimal对象序列化为Map时遇到麻烦(我无法在我的项目中更改此版本)。它总是被序列化为Double。 我用于序列化的代码:

public static Map<String, Object> serializeToMap(Object pojo) {
    return new ObjectMapper().convertValue(pojo, new HashMap<String, Object>() {}.getClass());
}

试图补充:

@JsonSerialize(typing = JsonSerialize.Typing.STATIC, as = BigDecimal.class)

并使用了序列化器:

public void serialize(BigDecimal value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
    jgen.writeObject(value.toString());
}

是否可以将其序列化为BigDecimal?

1 个答案:

答案 0 :(得分:2)

我通过用以下代码替换序列化来解决这个问题:

return new ObjectMapper().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS).convertValue(pojo, new HashMap<String, Object>() {}.getClass());