Yeah, I've run into this too (my situation is worse, I have RESTeasy
w/ Jackson, Apache CXF w/ Jettison and a third system using Spring MVC
w/ Jackson).

Jettison's JSON structure is more like XML with its use of root
elements in a parent wrapper tag.  This is acceptable by JSON
standards, but not normal by JSON standards.



On Wed, Sep 4, 2013 at 4:57 PM, Bill Burke <bbu...@redhat.com> wrote:
> JSON is not a *Java* format.  It is a JavaScript Object Notation.
>
> On 9/4/2013 4:54 PM, Mike Miller wrote:
>> Thanks - will try that.   Just included the Jackson jar but that didn't make 
>> it.
>>
>> One last question - don't mean to eat up all your time - but your statement, 
>>  "But you are right, Jettison produces different JSON."  How that be?  Isn't 
>> JSON a spec such that there should be consistent output for a set of data?
>>
>> -----Original Message-----
>> From: Bill Burke [mailto:bbu...@redhat.com]
>> Sent: Wednesday, September 04, 2013 3:50 PM
>> To: Mike Miller
>> Cc: resteasy-users@lists.sourceforge.net
>> Subject: Re: [Resteasy-users] Confused on handling response containing 
>> collections in json
>>
>> Just don't include the jettison module and include all the jackson stuff.  
>> Should work.
>>
>> On 9/4/2013 4:19 PM, Mike Miller wrote:
>>> Sorry - we are JBoss 4.2.3.GA (still) with RestEasy 2.3.5.
>>>
>>> -----Original Message-----
>>> From: Bill Burke [mailto:bbu...@redhat.com]
>>> Sent: Wednesday, September 04, 2013 3:06 PM
>>> To: Mike Miller
>>> Cc: resteasy-users@lists.sourceforge.net
>>> Subject: Re: [Resteasy-users] Confused on handling response containing
>>> collections in json
>>>
>>> What is your server?  Tomcat? Jetty?  JBoss version?
>>>
>>> On 9/4/2013 4:02 PM, Mike Miller wrote:
>>>> Okay, thanks - so how do I do that?  I see Chapter 21 (2.3.5) talks about 
>>>> Maven but we aren't using maven.  Do  I just need to include the jar or is 
>>>> there something in the web.xml that I need to add to include this 
>>>> 'provider?
>>>>
>>>> Also could someone please address my last question:
>>>>
>>>> "Are we using the Response object incorrectly?  What's really the 
>>>> difference between returning List<Customer> vs Response with the 
>>>> List<Customer> in the generic entity?"
>>>>
>>>> -----Original Message-----
>>>> From: Bill Burke [mailto:bbu...@redhat.com]
>>>> Sent: Wednesday, September 04, 2013 2:54 PM
>>>> To: resteasy-users@lists.sourceforge.net
>>>> Subject: Re: [Resteasy-users] Confused on handling response
>>>> containing collections in json
>>>>
>>>> Switch to Jackson on the server side.  We will be deprecating Jettison in 
>>>> the near future as it is buggy and not being well maintained.
>>>> Jackson has all of what Jettison has and more...
>>>>
>>>> But you are right, Jettison produces different JSON.
>>>>
>>>> On 9/4/2013 3:27 PM, Mike Miller wrote:
>>>>> We are building a restful api, using 2.3.5 (although I don't think
>>>>> the release level matters) and I am a bit confused on response
>>>>> handling within RestEasy:
>>>>>
>>>>> Right or wrong, we made most of our resource methods return
>>>>> Response, using the GenericEntity when we wanted to return a collection of
>>>>> objects.    Testing up to now was in Chrome Advanced Rest Client.  We
>>>>> have our beans JAXB annotated and the resource 'produces' both
>>>>> application/xml and application/json.  For example:
>>>>>
>>>>> @GET
>>>>>
>>>>> @Produces({"application/json", "application/xml"})
>>>>>
>>>>> *public*Response find(@ContextUriInfo uriInfo)
>>>>>
>>>>>            {
>>>>>
>>>>>                   setupQueryParms(uriInfo.getQueryParameters());
>>>>>
>>>>>                   List<Customer> custList = *null*;
>>>>>
>>>>> *try*{
>>>>>
>>>>>                          custList = listAllPaginated();
>>>>>
>>>>>                   } *catch*(FinderException e) {
>>>>>
>>>>>                          Log./getInstance/().error("FinderException
>>>>> caught :", e );
>>>>>
>>>>>                          throwException(Response.Status./NOT_FOUND/,
>>>>> "Error searching customers");
>>>>>
>>>>>                   }
>>>>>
>>>>>                   GenericEntity<List<Customer>> entity =
>>>>> *new*GenericEntity<List<Customer>>(custList) {};
>>>>>
>>>>> *return*Response./ok/(entity).build();
>>>>>
>>>>>            }
>>>>>
>>>>> Now, as part of writing JUnit test cases, I wanted to take the
>>>>> response I get back and put it back to object form so that I can then do 
>>>>> a set of
>>>>> asserts against the object or list of objects returned.   I downloaded
>>>>> Jackson version 1.9.11 and tried to serialize/marshal the json back
>>>>> to object form but keep getting the following error:
>>>>>
>>>>> Exception in thread "main"
>>>>> _org.codehaus.jackson.map.exc.UnrecognizedPropertyException_:
>>>>> Unrecognized field "Customer" (Class
>>>>> com.jda.portfolio.api.rest.base.Customer), not marked as ignorable
>>>>>
>>>>> at [Source: C:\PPOSDevelopment\Trunk\API\REST\Server\response.json;
>>>>> line: 1, column: 15] (through reference chain:
>>>>> com.jda.portfolio.api.rest.base.Customer["Customer"])
>>>>>
>>>>> Is there a difference between Jackson json and what RestEasy produces, 
>>>>> from I think Jettison?   I also took the example from User doc section 
>>>>> 19.6.1 JSON and JAXB collections/arrays
>>>>>
>>>>>
>>>>>
>>>>> [{"foo":{"@test":"bill"}},{"foo":{"@test":"monica}"}}] and tried to 
>>>>> marshal that back to object form - getting the same error.
>>>>>
>>>>>
>>>>>
>>>>> It seems like from Jackson, I would get something like:
>>>>>
>>>>> [{"@test":"bill"},{"@test":"monica}"}] for a List<Foo> - the difference 
>>>>> being the {foo: } which looks like a wrapper for the object.
>>>>>
>>>>>
>>>>>
>>>>> I changed the code to return List<Customer> instead of the Response with 
>>>>> GenericEntity including the List<Customer> but the json looks the same.
>>>>>
>>>>>
>>>>>
>>>>> What am I doing wrong?
>>>>>
>>>>>
>>>>>
>>>>> Are we using the Response object incorrectly?  What's really the 
>>>>> difference between returning List<Customer> vs Response with the 
>>>>> List<Customer> in the generic entity?
>>>>>
>>>>>
>>>>>
>>>>> I hope this is clear, but I can provide more details if needed.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --------------------------------------------------------------------
>>>>> -
>>>>> -
>>>>> -------- Learn the latest--Visual Studio 2012, SharePoint 2013, SQL
>>>>> 2012, more!
>>>>> Discover the easy way to master current and previous Microsoft
>>>>> technologies and advance your career. Get an incredible 1,500+ hours
>>>>> of step-by-step tutorial videos with LearnDevNow. Subscribe today and 
>>>>> save!
>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.
>>>>> c
>>>>> lktrk
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Resteasy-users mailing list
>>>>> Resteasy-users@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/resteasy-users
>>>>>
>>>>
>>>> --
>>>> Bill Burke
>>>> JBoss, a division of Red Hat
>>>> http://bill.burkecentral.com
>>>>
>>>> ---------------------------------------------------------------------
>>>> -
>>>> -------- Learn the latest--Visual Studio 2012, SharePoint 2013, SQL
>>>> 2012, more!
>>>> Discover the easy way to master current and previous Microsoft 
>>>> technologies and advance your career. Get an incredible 1,500+ hours of 
>>>> step-by-step tutorial videos with LearnDevNow. Subscribe today and save!
>>>> http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.
>>>> c lktrk _______________________________________________
>>>> Resteasy-users mailing list
>>>> Resteasy-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/resteasy-users
>>>>
>>>
>>> --
>>> Bill Burke
>>> JBoss, a division of Red Hat
>>> http://bill.burkecentral.com
>>>
>>
>> --
>> Bill Burke
>> JBoss, a division of Red Hat
>> http://bill.burkecentral.com
>>
>
> --
> Bill Burke
> JBoss, a division of Red Hat
> http://bill.burkecentral.com
>
> ------------------------------------------------------------------------------
> Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
> Discover the easy way to master current and previous Microsoft technologies
> and advance your career. Get an incredible 1,500+ hours of step-by-step
> tutorial videos with LearnDevNow. Subscribe today and save!
> http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
> _______________________________________________
> Resteasy-users mailing list
> Resteasy-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/resteasy-users

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users

Reply via email to