jackson annotations being ignored jackson annotations being ignored json json

jackson annotations being ignored


One relatively common reason is trying to use "wrong" set of annotations: Jackson 1.x and Jackson 2.x annotations live in different Java packages, and databind has to match major version. This design has the benefit of allowing 1.x and 2.x versions to be used side by side, without class loading conflicts; but downside that you have to make sure that you have matching versions.

Biggest problem is the use by frameworks: many JAX-RS implementations (like Jersey) still use Jackson 1.x by default. So I am guessing you might be using Jackson 1.x indirectly, but adding Jackson 2.x annotations. If so, you need to use 1.x annotations (ones under org.codehaus.jackson) instead.


Just in case that somebody hits a similiar problem where only @JsonFormat gets ignored:

Consider that in Spring Boot + Java 8 context the processing of LocalDateTime may experience troubles. Instead of following dependency:

 compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jdk8'

You should use:

 compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310'

Furthermore, when you create your Jackson ObjectMapper you need to register the implementation which treats LocalDateTime correctly:

 json = new ObjectMapper().findAndRegisterModules().writeValueAsString(entity); new ObjectMapper().findAndRegisterModules().readValue(json, entity.getClass());