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?
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 –
Ein Typ (Inklusion statt Incudsion) behoben, aber Sie brauchen mindestens Jackson 1.9, um es zu benutzen, fürchte ich. – jgm
Danke, ich habe die Version von Jackson aktualisiert und das ist jetzt in Ordnung :) –