You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Sergey Beryozkin <sb...@gmail.com> on 2013/12/10 19:25:23 UTC

Re: Pass in empty JSON array parameter

This actually works, it should be

 >>   -d '{"cmd":{"obj1": []}}'

Does not work well on the write side though, can't produce an absolutely 
empty [], but will be possible in Jettison 1.3.5

Sergey

On 14/10/13 10:38, Sergey Beryozkin wrote:
> Hi
> On 11/10/13 20:52, David Hay wrote:
>> I'm trying to pass in an empty array as a JSON parameter, but it seems to
>> come through as null.
>>
>> I'm trying:
>>
>>   -d '{"cmd":{"obj1": "[]"}}'
>>
>> where cmd is an object Cmd which has Obj1[ ]
>>
>> Is there a way to do this in CXF?
>>
> I'm not sure it is possible at the moment, I suspect Jettison would need
> to be updated to issue startElement and endElement events for "obj1" for
> JAXB to initialize a list/array. Try JacksonJsonProvider, may it can
> handle it
>
> Sergey
>
>> cheers,
>>
>> David
>>
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Re: Pass in empty JSON array parameter

Posted by Sergey Beryozkin <sb...@gmail.com>.
On 10/12/13 18:25, Sergey Beryozkin wrote:
> This actually works, it should be
>
>  >>   -d '{"cmd":{"obj1": []}}'

Well, in my test I had a bean with the initialized List, so I had it 
working. I've spent nearly a day today on Jettison properly reporting 
start and end element events for the empty arrays and ended up seeing 
the CXF tests failing due to JAXB, inexplicably, creating a single 
uninitialized bean and injecting it into the array, I had the same 
confirmed with XML, example, if you have


"<a><b/></a>"
and A bean having a List of Book and named as 'b' then this List<Book> 
will have an uninitialized Book added to it.

Similar issue is discussed at

http://stackoverflow.com/questions/4181120/transforming-empty-element-into-null-when-unmarshalling-with-jaxb

Basically, we have to keep the current Jettison reporting of events as is...

Cheers, Sergey

>
> Does not work well on the write side though, can't produce an absolutely
> empty [], but will be possible in Jettison 1.3.5
>
> Sergey
>
> On 14/10/13 10:38, Sergey Beryozkin wrote:
>> Hi
>> On 11/10/13 20:52, David Hay wrote:
>>> I'm trying to pass in an empty array as a JSON parameter, but it
>>> seems to
>>> come through as null.
>>>
>>> I'm trying:
>>>
>>>   -d '{"cmd":{"obj1": "[]"}}'
>>>
>>> where cmd is an object Cmd which has Obj1[ ]
>>>
>>> Is there a way to do this in CXF?
>>>
>> I'm not sure it is possible at the moment, I suspect Jettison would need
>> to be updated to issue startElement and endElement events for "obj1" for
>> JAXB to initialize a list/array. Try JacksonJsonProvider, may it can
>> handle it
>>
>> Sergey
>>
>>> cheers,
>>>
>>> David
>>>
>>
>
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com