JSON format of result isn't correct

I have developed RESTful web service which is running fine I have used one POJO and one service class that is shown below but the issue is that in the output it is showing extra $ please advise how to correct that right now the output is coming as

{
   "student":{
      "@id":"10",
      "age":{
         "$":"25"
      },
      "collegeName":{
         "$":"UP College"
      },
      "name":{
         "$":"Ram"
      }
   }
}

and I want that output should be

{
   "student":{
      "@id":"10",
      "age":25,
      "collegeName":"UP College",
      "name":"Ram"
   }
}

so below is my POJO

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement(name = "student")
public class Student {

    private int id;
    private String name;
    private String collegeName;
    private int age;

    @XmlAttribute
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement
    public String getCollegeName() {
        return collegeName;
    }

    public void setCollegeName(String collegeName) {
        this.collegeName = collegeName;
    }

    public int getAge() {
        return age;
    }

    @XmlElement
    public void setAge(int age) {
        this.age = age;
    }

}

below is my service class

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import org.jboss.resteasy.annotations.providers.jaxb.json.BadgerFish;


@Path("/restwb") 
public class StudentService {

    @BadgerFish
    @GET
    //@Path("/{id}")
    @Produces("application/json")
    public Student getStudentDetails(){
        Student student = new Student();
        student.setId(10);
        student.setName("Ram");
        student.setCollegeName("UP College");
        student.setAge(25);
        return student;
    }

}

and here is my pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.concretepage</groupId>
<artifactId>RestWB</artifactId>
<version>1</version>
<packaging>war</packaging>

<dependencies>
     <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>3.0.4.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>3.0.4.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jettison-provider</artifactId>
        <version>3.0.4.Final</version>
    </dependency>
</dependencies>      
</project>
Jon Skeet
people
quotationmark

Yes, this is the documented behaviour of Badgerfish:

Text content of elements goes in the $ property of an object.

From the documentation, there's no obvious way of transforming to object properties that don't have an @. (If you're happy with @age, you could use an XmlAttribute for age instead of XmlElement.)

But as you don't seem to have any need for an XML representation anyway, I'd suggest moving away from Badgerfish for your JSON representation, as Badgerfish is explicitly meant to be a transform from XML documents to JSON documents.

people

See more on this question at Stackoverflow