Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 1.4.2
-
Fix Version/s: 1.9
-
Component/s: Serializer
-
Labels:None
-
Number of attachments :
Description
When serializing, there is no option to avoid serialization empty collection as empty arrays.
For instance, that could be a new feature in the JsonSerialize.Inclusion and added to standard serializers.
Workaround in the meantime (to confirm): build a custom serializer and add a generic mapping.
I tried something like that, which does not work (Jackson 1.4.2).
My custom serialize is not called.
I've probably done something bad but cannot find it...
ObjectMapper mapper = new ObjectMapper(); AnnotationIntrospector primary = new JacksonAnnotationIntrospector(); AnnotationIntrospector secondary = new JaxbAnnotationIntrospector(); AnnotationIntrospector pair = new AnnotationIntrospector.Pair(primary, secondary); mapper.getDeserializationConfig().setAnnotationIntrospector(pair); mapper.getSerializationConfig().setAnnotationIntrospector(pair); mapper.getSerializationConfig().disable(SerializationConfig.Feature.INDENT_OUTPUT); mapper.getSerializationConfig().enable(SerializationConfig.Feature.USE_ANNOTATIONS); mapper.getSerializationConfig().enable(SerializationConfig.Feature.WRAP_ROOT_VALUE); mapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); CustomSerializerFactory sf = new CustomSerializerFactory(); sf.addGenericMapping(Collection.class, new JsonSerializer<Collection>() { @Override public void serialize(Collection value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { if (value.size() != 0) { ContainerSerializers.CollectionSerializer.instance.serialize(value, jgen, provider); } } }); mapper.setSerializerFactory(sf);