繁体   English   中英

如何序列化BigDecimal以使用杰克逊映射值?

[英]How to serialize BigDecimal to map value with 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?

我通过将序列化替换为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM