Saltar al contenido

Ignorando nuevos campos en objetos JSON usando Jackson

Solución:

Jackson proporciona una anotación que se puede utilizar a nivel de clase (JsonIgnoreProperties).

Agregue lo siguiente a la parte superior de su clase (no a métodos individuales):

@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo {
    ...
}

Dependiendo de la versión de jackson que esté usando, tendría que usar una importación diferente en la versión actual que es:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

en versiones anteriores ha sido:

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

Además de los 2 mecanismos ya mencionados, también existe una función global que se puede utilizar para suprimir todas las fallas causadas por propiedades desconocidas (no asignadas):

// 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);

Este es el valor predeterminado que se usa en ausencia de anotaciones y puede ser una alternativa conveniente.

Respuesta actualizada y completa con Jackson 2


Usar anotación

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class MyMappingClass {

}

Consulte JsonIgnoreProperties en la documentación en línea de Jackson.

Usando la configuración

Menos intrusivo que la anotación.

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

ObjectReader objectReader = objectMapper.reader(MyMappingClass.class);
MyMappingClass myMappingClass = objectReader.readValue(json);

Consulte FAIL_ON_UNKNOWN_PROPERTIES en la documentación en línea de Jackson.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *