UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Spring Boot】Jackson2ObjectMapperBuilderでObjectMapperをカスタマイズする

JacksonのObjectMapperをカスタマイズしたいのでやり方を調べた

Bean登録して、@Primaryアノテーションをつける

一番シンプルな方法

@Bean
@Primary
public ObjectMapper objectMapper() {
    JavaTimeModule module = new JavaTimeModule();
    module.addSerializer(LOCAL_DATETIME_SERIALIZER);
    return new ObjectMapper()
      .setSerializationInclusion(JsonInclude.Include.NON_NULL)
      .registerModule(module);
}

Jackson2ObjectMapperBuilderを使う

Jacksonがクラスパス上にある場合は、Jackson2ObjectMapperBuilderが使える

docs.spring.io

これを使う場合は、以下の設定がデフォルトでされているとのこと

MapperFeature.DEFAULT_VIEW_INCLUSION is disabled DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES is disabled SerializationFeature.WRITE_DATES_AS_TIMESTAMPS is disabled

@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
    return new Jackson2ObjectMapperBuilder().serializers(LOCAL_DATETIME_SERIALIZER)
      .serializationInclusion(JsonInclude.Include.NON_NULL);
}

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.html

これでカスタマイズすることができた