2013-02-06 10 views
5

Ich baue JSON aus Java-Objektbaum mit Jackson ObjectMapper. Einige meiner Java-Objekte sind Sammlungen und manchmal leer. Also, wenn sie leer sind, generiert ObjectMapper mich: "attributes": [], und ich möchte diese Art von leeren JSON-Arrays von meinem Ergebnis ausschließen. Mein aktueller ObjectMapper config:Leere Arrays aus Jackson ausschließen ObjectMapper

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

Von this post ich gelesen habe, dass ich verwenden können:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT); 

Aber das erzeugt mir einen Fehler:

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. 

Wie soll ich verhindern diese leeren Arrays in meinem Ergebnis erscheinen?

Antwort

9

sollten Sie verwenden:

config.setSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY); 

für Jackson 1 oder

config.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 

für Jackson 2

+0

Ich bin mit Jackson: 1.8.5, aber es gibt keine solche Option: JsonSerialize. Includsion.NON_EMPTY. Es gibt nur: IMMER, NON_NULL, NON_DEFAULT –

+0

Ein Typ (Inklusion statt Incudsion) behoben, aber Sie brauchen mindestens Jackson 1.9, um es zu benutzen, fürchte ich. – jgm

+0

Danke, ich habe die Version von Jackson aktualisiert und das ist jetzt in Ordnung :) –

Verwandte Themen