简体   繁体   English

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

[英]How to serialize BigDecimal to map value with jackson?

Having troubles with serializing BigDecimal object to Map using jackson version 2.7.3 (I can't change this version on my project). 使用杰克逊2.7.3版将BigDecimal对象序列化为Map时遇到麻烦(我无法在项目中更改此版本)。 It's always serialized as Double. 它始终序列化为Double。 Code I use for serialization: 我用于序列化的代码:

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

Tried to add: 尝试添加:

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

and used serializer: 并使用了序列化器:

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

Is it possible to serialize it as BigDecimal? 是否可以将其序列化为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