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

13,684

Solution 1

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.

Solution 2

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.

Share:
13,684
NarayanaReddy
Author by

NarayanaReddy

Updated on June 09, 2022

Comments

  • NarayanaReddy
    NarayanaReddy almost 2 years

    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