java - property - jsonignore only for serialization
Ignore las propiedades que faltan durante la deserialización de jackson json en java (5)
Creo que lo que quieres es
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class Person {
...
}
Esa es la manera de Jackson 1.x. Creo que hay una nueva forma en 2.x. Algo como
@JsonInclude(Include.NON_NULL)
public class Person {
...
}
Le indicarán a Jackson que solo serialice los valores que no son nulos y no se quejará cuando deserialice un valor faltante. Creo que simplemente lo establecerá en el valor predeterminado de Java.
En el ejemplo
Class Person{
String name;
int age;
}
Si el objeto json tiene una propiedad ''age'' perdida,
{
name : John
}
Person person = objectMapper.readValue(jsonFileReader, Person.class);
lanza una excepción JsonMappingException que indica que no se puede deserializar. ¿Hay una anotación para ignorar los campos faltantes durante la deserialización?
Gracias
Creo que querrías usar la anotación @JsonIgnore: https://fasterxml.github.io/jackson-annotations/javadoc/2.2.0/com/fasterxml/jackson/annotation/JsonIgnore.html
El enfoque basado en anotaciones es una mejor manera de ignorar, pero si es necesario. El modo manual de deserialización:
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Person person = mapper.readValue(jsonFileReader, Person.class);
Las versiones modernas (2.9.6) de las bibliotecas Jackson ignorarán las propiedades del creador faltantes por defecto. Sin embargo, si la configuración de ObjectMapper se establece en:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES, true);
Entonces obtendrá un error de deserialización si falta una de las propiedades.
@JsonIgnoreProperties(ignoreUnknown = true)
en el nivel de clase funcionó para mí