sometimes property only jsonignore ignorable for fields java json serialization jackson

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



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í