Ok found what my problem was. Cxf was ignoring the jackson provider and I 
needed to set skip.default.json.provider.registration to true for it to use 
JacksonJasonProvider.

On Monday, December 18, 2017 at 11:51:09 PM UTC+1, Tatu Saloranta wrote:
>
> On Mon, Dec 18, 2017 at 12:01 PM, Simon Joseph Aquilina 
> <[email protected] <javascript:>> wrote: 
> > I have used the ObjectMapper on its own and you confirm that it works as 
> you 
> > say. 
> > It looks like my issue is with the combination with Cxf then. 
>
> Ah. Yes, it may well be that Cxf for some reason chooses different 
> defaults. 
> I am not sure why (I think this setting is somewhat confusing), but 
> traditionally one reason has been 
> that some XML frameworks have had this behavior due to difficulties in 
> distinguishing case of 
> single-element array and simple object value. 
>
> -+ Tatu +- 
>
>
> > 
> > 
> > On Monday, December 18, 2017 at 8:33:33 AM UTC+1, Tatu Saloranta wrote: 
> >> 
> >> On Sun, Dec 17, 2017 at 4:01 PM, Simon Joseph Aquilina 
> >> <[email protected]> wrote: 
> >> > Hello, I am using 
> com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider 
> >> > to 
> >> > generate a JSON output of my objects. However when a List has only 
> one 
> >> > element the JSON output I get is that of a single object and not a 
> list 
> >> > of 
> >> > objects. 
> >> > 
> >> > For example if I have a List<User> users = new ArrayList() with only 
> one 
> >> > User object in this I get the following output: 
> >> > 
> >> > "users" : { "username" : "hello" } 
> >> > 
> >> > and not 
> >> > 
> >> > "users" : [{"username" : "hello" } 
> >> > 
> >> > I have been looking on the internet for a solution but could not find 
> >> > any 
> >> > (using fasterxml jackson library was listed as a solution initself 
> which 
> >> > is 
> >> > why I am using it now). I initialise my JacksonJsonProvider as 
> follows: 
> >> > 
> >> > 
> >> >         ObjectMapper mapper = new ObjectMapper(); 
> >> >         return new JacksonJsonProvider(mapper); 
> >> > 
> >> > And the list is annotated as follows: 
> >> > 
> >> > @XmlElement(name="users") 
> >> > List<User> users = new ArrayList<>(); 
> >> > 
> >> > What can I do to force JacksonJsonProvider to output a java.util.List 
> >> > always 
> >> > as a list in JSON even when such list has only one element? 
> >> 
> >> By default, Jackson serializes Lists as Lists. It does not unwrap 
> >> single element. 
> >> 
> >> It is possible to change this behavior by enabling 
> >> 
> >>     SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED 
> >> 
> >> (or using `@JsonFormat` per-property annotation with similar setting) 
> >> 
> >> so I would try to figure out who is configuring behavior either via 
> >> ObjectMapper, 
> >> or by declaring `users` property with formatting options. 
> >> 
> >> I hope this helps, 
> >> 
> >> -+ Tatu +- 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "jackson-user" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to