【问题标题】:Produce JSON with name of the object from REST web services in Java从 Java 中的 REST Web 服务生成带有对象名称的 JSON
【发布时间】:2016-02-18 12:54:31
【问题描述】:

我编写了一个返回 JSON 的 REST Web 服务,如下所示

[{"id":0,"name":"Vishal","age":"23","dob":"21/1/1992","phone":"9966558","sslc":"90","hsc":"90","college":"90"}, 
{"id":0,"name":"Karthik","age":"27","dob":"14/8/1988","phone":"995674","sslc":"99","hsc":"100","college":"100"},
{"id":0,"name":"Jeeva","age":"29","dob":"10/1/1987","phone":"77422","sslc":"99","hsc":"99","college":"100"},
{"id":0,"name":"Arya","age":"26","dob":"10/1/1989","phone":"55668","sslc":"100","hsc":"99","college":"99"}]

但我希望输出附加了“学生”,如下所示。

{"student":[{"id":0,"name":"Vishal","age":"23","dob":"21/1/1992","phone":"9966558","sslc":"90","hsc":"90","college":"90"}, 
{"id":0,"name":"Karthik","age":"27","dob":"14/8/1988","phone":"995674","sslc":"99","hsc":"100","college":"100"},
{"id":0,"name":"Jeeva","age":"29","dob":"10/1/1987","phone":"77422","sslc":"99","hsc":"99","college":"100"},
{"id":0,"name":"Arya","age":"26","dob":"10/1/1989","phone":"55668","sslc":"100","hsc":"99","college":"99"}]}

我怎样才能实现这个输出?

下面是产品类别

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

/**
 * 
 */
private static final long serialVersionUID = 1L;

public Student() {
    super();
}

public Student(int id, String name, String age, String dob, String phone,
        String sslc, String hsc, String college) {
    super();
    this.id = id;
    this.name = name;
    this.age = age;
    this.dob = dob;
    this.phone = phone;
    this.sslc = sslc;
    this.hsc = hsc;
    this.college = college;
}


private int id;
private String name;
private String age;
private String dob;
private String phone;

private String sslc;
private String hsc;
private String college;

@XmlElement
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 getAge() {
    return age;
}
public void setAge(String age) {
    this.age = age;
}

@XmlElement
public String getDob() {
    return dob;
}
public void setDob(String dob) {
    this.dob = dob;
}

@XmlElement
public String getPhone() {
    return phone;
}
public void setPhone(String phone) {
    this.phone = phone;
}

@XmlElement
public String getSslc() {
    return sslc;
}
public void setSslc(String sslc) {
    this.sslc = sslc;
}

@XmlElement
public String getHsc() {
    return hsc;
}
public void setHsc(String hsc) {
    this.hsc = hsc;
}

@XmlElement
public String getCollege() {
    return college;
}
public void setCollege(String college) {
    this.college = college;
}
@Override
public String toString() {
    return "Student [id=" + id + ", name=" + name + ", age=" + age
            + ", dob=" + dob + ", phone=" + phone + ", sslc=" + sslc
            + ", hsc=" + hsc + ", college=" + college + "]";
}
}

下面是服务类。

@GET
@Path("/student.srv")
@Produces("application/json")
public Response getStudentJson(){
    DAOLayer daoLayer=new DAOLayer();
    List<Student> studentsList=null;
    try {
        studentsList=daoLayer.getStudents();

    } catch (SQLException e) {
        e.printStackTrace();
    }
    return Response.ok(studentsList).build();
}

请帮助我实现上述输出。 提前致谢。

【问题讨论】:

    标签: java json web-services rest


    【解决方案1】:

    要获得所需的输出,您必须创建一个包含List&lt;Student&gt; student 的根对象并将其返回:

    Root.java

    @XmlRootElement(name="root")
    public class Root implements Serializable {
    
        @XmlList
        private List<Student> student = new ArrayList<Student>();
    
        // getter and setter
    }
    

    Service.java

    @GET
    @Path("/student.srv")
    @Produces("application/json")
    public Response getStudentJson(){
        DAOLayer daoLayer=new DAOLayer();
        List<Student> studentsList=null;
        try {
            studentsList=daoLayer.getStudents();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    
        Root root = new Root();
        root.setStudent(studentsList),
    
        return Response.ok(root).build();
    }
    

    【讨论】:

    • 我认为您应该将 root 名称更改为 student 但仅此而已:) +1
    • @DawidPura 为什么?根对象从第一个{ 开始,它包含一个名为studentStudent 列表。请注意,OP 包装了学生列表。
    • 啊,对。忘记@XmlList注释,对不起!
    猜你喜欢
    • 2017-12-26
    • 2012-07-10
    • 2012-08-06
    • 2014-02-17
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    相关资源
    最近更新 更多