hi wildPengiun

can u plz explain more what u did to alter json output in rest service

I am, using jaxrs I also want to alter json output by adding callback
function

please can provide some sample code

suppose my rest service is

@GET
    @Produces("application/json")
    @Consumes("application/json")
    @Path("/users/json") 
    public Flights getFlightListAsJson() {
        return getFlights();            
           }

& i get ouput 
{"flights":{"flight":[{"@flightId":"OK123","company":"Czech
Airlines","number":123,"aircraft":"B737"},{"@flightId":"OK124","company":"Czech
Airlines","number":124,"aircraft":"AB115"}]}}

but i wanted to do output like
getflight({"flights":{"flight":[{"@flightId":"OK123","company":"Czech
Airlines","number":123,"aircraft":"B737"},{"@flightId":"OK124","company":"Czech
Airlines","number":124,"aircraft":"AB115"}]}})

how can write this getflight string in response using jaxrs.



wildPengiun wrote:
> 
> Thanks for that Sergey, but I've had a success with my REST
> outInterceptors. Instead of using an annotation on the service class I've
> added it to the beans.xml and now its burst into life. Now I can see the
> content-type is JSON hoorah.
> 
> Next problem is how to change the message ?? any clues
> 
> Thanks for all the help.
> 
> 
> 
> Sergey Beryozkin-3 wrote:
>> 
>> Hi
>> 
>>>
>>> I'm trying to alter some output in a REST call. I want to wrap the JSON
>>> output with a callback name. I've managed to get a filter to work (all
>>> my
>>> attempts to get the OutInterceptor to work have failed). So now I've got
>>> a
>>> message object.
>>>
>>> To alter the message I thought I could use something like JSONStream os
>>> =
>>> message.getContent(JSONStream.class); but this returns null. Anyone have
>>> an
>>> idea how I can alter the JSON.
>> 
>> JAXRS Output filters are invoked immediately after the invocation has
>> returned but before a given method response has been 
>> serialized into the output message.
>> 
>> So I think what you need to do in your response handler is to replace the
>> actual OutputStream.class with a buffered/filter one, 
>> wrapping the original one.
>> 
>> What will happen next is that a JSONProvider will write into this stream
>> and I guess at this moment  you can transfrom the incoming 
>> output bytes.
>> 
>> It's basically doing same thing you can do with Servlet filters.
>> 
>> Default JSONProvider does not append a JSONStream.class.
>> 
>> As such another option is actually write a custom JSON
>> MessageVBodyWriter, possibly either extending the default one or simple 
>> copying its code and updating its wtiteTo() method to do a pre-request
>> specific JSON or something like that.
>> Providers can have @Contexts like UriInfo, etc, injected so one can get
>> some additional info from there.
>> 
>> Does it make sense or am I missing the point ?
>> 
>> Cheers, Sergey
>> 
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/Altering-JSON-Output-in-a-REST-service-tp20478852p20478852.html
>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>> 
>> 
>> 
>> 
>> 
> 
> 



-- 
View this message in context: 
http://www.nabble.com/Altering-JSON-Output-in-a-REST-service-tp20478852p21721601.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to