我已经开发了运行良好的RESTful Web服务我使用了一个POJO和一个服务类,如下所示,但问题是在输出中它显示额外$请告知如何纠正现在输出是
{
"student":{
"@id":"10",
"age":{
"$":"25"
},
"collegeName":{
"$":"UP College"
},
"name":{
"$":"Ram"
}
}
}
我想要输出
{
"student":{
"@id":"10",
"age":25,
"collegeName":"UP College",
"name":"Ram"
}
}
以下是我的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;
}
}
下面是我的服务类
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;
}
}
这是我的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>
答案 0 :(得分:2)
是的,这是Badgerfish的documented behaviour:
元素的文本内容位于对象的$属性中。
从文档中,没有明显的方法可以转换为没有@
的对象属性。 (如果您对@age
感到满意,则可以使用XmlAttribute
代替XmlElement
。)
但是,由于您似乎无论如何都不需要XML表示,我建议您远离Badgerfish进行JSON表示,因为Badgerfish明确意味着从XML文档转换为JSON文档。
答案 1 :(得分:1)
您获得的格式是您提供的Badgerfish。没有办法改变它。要么删除Badgerfish并获得方便的JSON,要么使用该库的工作结果。