Buduję JSON z drzewa obiektów Java przy użyciu Jackson ObjectMapper. Niektóre z moich obiektów Java są kolekcjami i czasami mogą być puste. Więc jeśli są puste, to ObjectMapper generuje mnie: "attributes": [],
i chcę wykluczyć takie puste tablice JSON z mojego wyniku. Mój obecny ObjectMapper config:Wyklucz puste tablice z obiektu Jackson ObjectMapper
SerializationConfig config = objectMapper.getSerializationConfig();
config.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
config.set(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
Od this post Czytałem, że mogę używać:
config.setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT);
Ale to przynosi mi błąd:
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.
Więc jak mam zapobiec te puste tablice, które pojawią się w moim wyniku?
Używam Jackson: 1.8.5, ale nie ma takiej opcji: JsonSerialize. Includsion.NON_EMPTY. Jest tylko: ZAWSZE, NON_NULL, NON_DEFAULT –
Naprawiono typ (Włączenie zamiast Incudsion), ale potrzebujesz przynajmniej Jackson 1.9, aby go użyć Obawiam się. – jgm
Dzięki, zaktualizowałem wersję Jacksona i to jest teraz w porządku :) –