¿Cómo se establece globalmente que Jackson ignore las propiedades desconocidas en Spring?

Jackson tiene anotaciones para ignorar propiedades desconocidas dentro de una clase usando:

@JsonIgnoreProperties(ignoreUnknown = true) 

Le permite ignorar una propiedad específica usando esta anotación:

 @JsonIgnore 

Si desea configurarlo globalmente, puede modificar el asignador de objetos:

 // jackson 1.9 and before objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); // or jackson 2.0 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 

¿Cómo se establece esto globalmente usando un resorte para que pueda ser @Autowired en el inicio del servidor sin escribir clases adicionales?

Esto se puede lograr usando MethodInvokingFactoryBean de spring:

        FAIL_ON_UNKNOWN_PROPERTIES false    

Esto se puede conectar a una RestTemplate como esta:

          

También se puede inyectar directamente en los convertidores de mensajes para su uso con Spring MVC:

         

Para jackson 1.9x o inferior, puede ignorar las propiedades desconocidas con el proveedor de asignador de objetos

 @Provider @Component public class JerseyObjectMapperProvider implements ContextResolver { @Override public ObjectMapper getContext(Class< ?> type) { ObjectMapper result = new ObjectMapper(); result.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); return result; } } 

Para jackson 2.xy posteriores, puede ignorar las propiedades desconocidas con el proveedor de asignador de objetos

 @Provider @Component public class JerseyObjectMapperProvider implements ContextResolver { @Override public ObjectMapper getContext(Class< ?> type) { ObjectMapper result = new ObjectMapper(); result.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); return result; } } 

Las clases de Jersey no son descubiertas automáticamente por Spring. Debe registrarlos manualmente.

 public class JerseyConfig extends ResourceConfig { public JerseyConfig() { register(JerseyObjectMapperProvider.class); } } 

Para las versiones más nuevas de Jackson (2.x) hay algunos cambios:

        FAIL_ON_UNKNOWN_PROPERTIES false