Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is that mandatory to use @XmlRootElement for JSON responce also in Jersey webservices?

My code actually contains one resource class and one BEan class it's return type is JSON.

Resource Class

@Path("/json")
public class JSONRetrive {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public JSONT getJson(){
        JSONT jsont = new JSONT();
        jsont.setJsont("inr");
        return jsont;
    }
}

/* Is there any Annotation will represent JSON. Do i need to use any other Annotation for this.*/

My Bean class

//@XmlRootElement
public class JSONT {
private String jsont;

public String getJsont() {
    return jsont;
}

public void setJsont(String jsont) {
    this.jsont = jsont;
}

}

If i uncomment @XmlRootElement it is working fine is there any other alternative solution for this

like image 310
NarayanaReddy Avatar asked Mar 21 '13 12:03

NarayanaReddy


2 Answers

I got alternative solution for this @XmlRootElement, if we wanted to generate JSON response with out using @XmlRootElement we should go for Jersey Jackson library. Add the below given code in web.xml (DD file)

<init-param>
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
    <param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

and Jackson API related jar's.

like image 80
NarayanaReddy Avatar answered Nov 10 '22 22:11

NarayanaReddy


If you are using Jersey and Maven , then just go to your pom.xml and uncomment/add below code depending on your case

<!-- uncomment this to get JSON support
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-binding</artifactId>
        </dependency>
-->

After this, you can use @Produces(MediaType.APPLICATION_JSON) and you will get JSON response.

like image 1
Aniket Warey Avatar answered Nov 10 '22 21:11

Aniket Warey