【问题标题】:json serializer with spring boot带有spring boot的json序列化器
【发布时间】:2019-10-03 09:20:12
【问题描述】:

我有 BigDecimalSerializer

public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {

@Override
public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers)
  throws IOException {
gen.writeString(value.setScale(6, BigDecimal.ROUND_HALF_UP).toString());
}
}

然后

 @JsonSerialize(using = BigDecimalSerializer.class)
 private BigDecimal foo;

有什么方法可以代替在每个成员变量中进行注释,而是立即告诉 spring boot 适用于所有项目?

【问题讨论】:

    标签: spring-boot jackson java-custom-serialization


    【解决方案1】:

    尝试通过添加自定义模块来配置ObjectMapper。如果您使用的是spring-data-rest,则可能如下所示:

    @Configuration
    public static class ObjectMapperConfigurer extends RepositoryRestConfigurerAdapter {
        @Override
        public void configureJacksonObjectMapper(final ObjectMapper objectMapper) {
            SimpleModule myModule = new SimpleModule();
            myModule.addSerializer(BigDecimal.class, BigDecimalSerializer.class);           
            objectMapper.registerModule(myModule));
        }
    }
    

    否则只需提供您自己的ObjectMapper bean 并在创建时对其进行配置。

    【讨论】:

    • RepositoryRestConfigurerAdapter 被贬低
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2011-09-29
    相关资源
    最近更新 更多