[
https://issues.apache.org/jira/browse/WINK-299?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12914131#action_12914131
]
Jesse Ramos commented on WINK-299:
----------------------------------
After fiddling with things a bit I found that taking all the defaults for the
JacksonJaxbJsonProvider results in null properties being marshaled into the
resulting JSON for JAXB Objects. I think we should suppress these from being
written.
Looking at our unit tests, I see we do the following:
{code}
JacksonJaxbJsonProvider jacksonProvider = new JacksonJaxbJsonProvider();
jacksonProvider.configure(Feature.WRITE_NULL_PROPERTIES, Boolean.FALSE);
return new Object[] {jacksonProvider};
{code}
However, Feature.WRITE_NULL_PROPERTIES is deprecated. It looks like using this
code instead, we achieve the same thing:
{code}
JacksonJaxbJsonProvider jacksonProvider = new JacksonJaxbJsonProvider();
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);
AnnotationIntrospector pair =
new AnnotationIntrospector.Pair(new JaxbAnnotationIntrospector(),
new
JacksonAnnotationIntrospector());
mapper.getDeserializationConfig().setAnnotationIntrospector(pair);
mapper.getSerializationConfig().setAnnotationIntrospector(pair);
jacksonProvider.setMapper(mapper);
{code}
I'm planning to check in a WinkJacksonJaxbJsonProvider that uses this
configuration. Thoughts?
> Make Jackson the default JSON provider for Wink
> -----------------------------------------------
>
> Key: WINK-299
> URL: https://issues.apache.org/jira/browse/WINK-299
> Project: Wink
> Issue Type: Improvement
> Components: Providers
> Reporter: Jason Dillon
>
> Jackson seems to be the only JSON provider that works well (the other ones
> work in limited situations, but Jackson seems to handle it all well). So IMO
> Jackson should be considered as the default JSON provider for Wink.
> ATM the Jackson module doesn't provide a Provider impl, it should get a
> proper implementation that sets up a reasonable configuration. This has been
> working very, very well for me:
> {code}
> ObjectMapper mapper = new ObjectMapper();
> AnnotationIntrospector pair = new AnnotationIntrospector.Pair(
> new JaxbAnnotationIntrospector(), new
> JacksonAnnotationIntrospector());
> mapper.getDeserializationConfig().setAnnotationIntrospector(pair);
> mapper.getSerializationConfig().setAnnotationIntrospector(pair);
> JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
> provider.setMapper(mapper);
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.