使用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?
答案 0 :(得分:2)
我通过用以下代码替换序列化来解决这个问题:
return new ObjectMapper().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS).convertValue(pojo, new HashMap<String, Object>() {}.getClass());