2013-02-06 1 views
5

Sto costruendo JSON dall'albero degli oggetti Java usando Jackson ObjectMapper. Alcuni dei miei oggetti Java sono raccolte e talvolta potrebbero essere vuote. Quindi se sono vuoti, ObjectMapper mi genera: "attributes": [], e voglio escludere quel tipo di array JSON vuoti dal mio risultato. Il mio attuale configurazione ObjectMapper:Escludere gli array vuoti da Jackson ObjectMapper

SerializationConfig config = objectMapper.getSerializationConfig(); 
config.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); 
config.set(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); 

Da this post Ho letto che posso usare:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT); 

ma che mi sta generando un errore:

Caused by: java.lang.IllegalArgumentException: Class com.mycomp.assessments.evaluation.EvaluationImpl$1 has no default constructor; can not instantiate default bean value to support 'properties=JsonSerialize.Inclusion.NON_DEFAULT' annotation. 

Allora, come devo evitare quegli array vuoti appaiono nel mio risultato?

risposta

9

Si dovrebbe usare:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY); 

per Jackson 1 o

config.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 

per Jackson 2

+0

Sto usando Jackson: 1.8.5, ma non c'è tale opzione: JsonSerialize. Includsion.NON_EMPTY. C'è solo: SEMPRE, NON_NULL, NON_DEFAULT –

+0

Corretto un tipo (Inclusione piuttosto che Incudsion), ma ho bisogno almeno di Jackson 1.9 per usarlo, ho paura. – jgm

+0

Grazie, ho aggiornato la versione di Jackson e questo va bene ora :) –