Java Jersey-RESTAPI(Json格式)

Java Jersey-RESTAPI(Json格式),java,json,rest,jersey,Java,Json,Rest,Jersey,我正在尝试创建一个Jersey应用程序,并希望以Json格式将输出传递给web浏览器。下面是代码。我只能以xml格式传递数据,当我更改为“application/json”格式时,“HTTP状态500-内部服务器错误”出现。有什么建议吗?谢谢 import java.net.URISyntaxException; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax

我正在尝试创建一个Jersey应用程序,并希望以Json格式将输出传递给web浏览器。下面是代码。我只能以xml格式传递数据,当我更改为“application/json”格式时,“HTTP状态500-内部服务器错误”出现。有什么建议吗?谢谢

import java.net.URISyntaxException;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/emp")
public class EmployeeService {

    @GET
    @Path("/get/{empID}")   
    @Produces({"application/json"})
    public Employee getEmployee(@PathParam("empID") String empID){
        Employee employee = new com.rest.employee.model.Employee();
        employee.setEmpID(empID);
        employee.setName("George");
        employee.setEmail("george@gmail.com");
        return employee;
        }
}
和另一个java文件

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name="employee")

public class Employee {
    public String empID;
    public String name;
    public String email;

    @XmlElement(required=true)
    public String getEmpID() {
        return empID;
    }
    public void setEmpID(String empID) {
        this.empID = empID;
    }

    @XmlElement(required=true)
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @XmlElement(required=true)
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

你需要把泽西和杰克逊结合起来。请看本教程:


代码看起来“几乎”很好,对我来说就像预期的那样,但是您的
员工应该实现可序列化。我现在看不出还有什么问题,所以我想问题出在别的地方

您说过,它不再工作了,因为您从XML更改为JSON。所以我认为,您缺少对JSON的依赖。检查这个


但事实上,缺少依赖项不应导致500。您添加了一个
异常apper
,并且您自己抛出了500,这是真的吗?

嘿,您能展示一下您的json请求是什么吗?如果可能的话,控制台输出在这些情况下有很多信息,我通常只使用@products({“application/xml”})来获得xml输出。但现在我想得到Json文件。所以我把它改为@products({“application/json”})。。。这导致了错误。请求应该是empID、Name和电子邮件。尝试添加@Consumes({“application/json”})我没有使用EclipseTomcat,也没有Maven。你还有其他建议吗?谢谢。我在整个项目中只有这两个文件。所以我不认为这个错误是我自己造成的。是否可能是因为我使用的是最新的jersey jar文件(2.12)?我想可能会改变最新球衣的款式。你能上传你做的代码吗?谢谢。真的很奇怪,因为如果你没有匹配的封送拆收器,你应该得到一个E406(不可接受)而不是E500(内部服务器错误)。如果您真的只有2个文件(Employee.java、EmployeeService.java),那么您从未见过将员工序列化为XML;)。。。这些天将提供一个例子。。。