Java Jersey-RESTAPI(Json格式)
我正在尝试创建一个Jersey应用程序,并希望以Json格式将输出传递给web浏览器。下面是代码。我只能以xml格式传递数据,当我更改为“application/json”格式时,“HTTP状态500-内部服务器错误”出现。有什么建议吗?谢谢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
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;)。。。这些天将提供一个例子。。。