java - Come dire a Jackson di ignorare un campo durante la serializzazione se il suo valore è nullo?




7 Answers

Con Jackson> 1.9.11 e <2.x usa @JsonSerialize annotazione @JsonSerialize per farlo:

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

java jackson

Come può essere configurato Jackson per ignorare un valore di campo durante la serializzazione se il valore di quel campo è nullo.

Per esempio:

public class SomeClass {
   // what jackson annotation causes jackson to skip over this value if it is null but will 
   // serialize it otherwise 
   private String someValue; 
}



In Jackson 2.x, utilizzare:

@JsonInclude(JsonInclude.Include.NON_NULL)



nel mio caso

@JsonInclude(Include.NON_EMPTY)

ha funzionato




@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonInclude(JsonInclude.Include.NON_EMPTY)

dovrebbe funzionare.

Include.NON_EMPTY indica che la proprietà è serializzata se il suo valore non è nullo e non è vuoto. Include.NON_NULL indica che la proprietà è serializzata se il suo valore non è nullo.







Questo mi ha turbato per un bel po 'di tempo e alla fine ho trovato il problema. Il problema era dovuto a un'importazione errata. Prima stavo usando

com.fasterxml.jackson.databind.annotation.JsonSerialize

Che era stato deprecato. Basta sostituire l'importazione con

import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;

e usarlo come

@JsonSerialize(include=Inclusion.NON_NULL)



Configurazione globale se usi Spring

@Configuration
public class JsonConfigurations {

    @Bean
    public Jackson2ObjectMapperBuilder objectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        builder.serializationInclusion(JsonInclude.Include.NON_NULL);
        builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
        builder.failOnUnknownProperties(false);
        return builder;
    }

}





Related


Tags

java   jackson