我是Jersey的新手,并且一直在尝试为一个简单的POST
REST资源实现一个Student
处理程序,该资源由一个名称和一个CIP组成,这是另一个字符串。我正在使用Tomcat 8.5:
public class StudentResource {
String m_name;
String m_cip;
public StudentResource(String p_name, String p_cip) {
m_name = p_name;
m_cip = p_cip;
}
public String getName() {
return m_name;
}
public void setName(String p_name) {
m_name = p_name;
}
public String getCip() {
return m_cip;
}
public void setCip(String p_cip) {
m_cip = p_cip;
}
}
POST
处理程序:
@Path("students")
public class StudentResourceHandler {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public StudentResource onNewStudent(StudentResource p_newStudent) {
return p_newStudent
}
}
我只想返回我发布的内容...我已经能够在我的GET
处理程序中处理JSON而没有错误(即返回JSON的工作原理),但不知何故{@ 1}}处理程序总是如此没有这个例外:
POST
我正在使用RESTClient来发出请求。这是一个对我失败的请求:
头:
javax.servlet.ServletException: javax.ws.rs.ProcessingException: Error deserializing object from entity stream.
体:
Content-Type : application/json
我正在做的事情肯定有问题,但我找不到原因。任何帮助,将不胜感激。感谢。
答案 0 :(得分:3)
如果你没有默认构造函数,杰克逊就无法实例化。
尝试添加默认构造函数:
public class StudentResource {
String m_name;
String m_cip;
public StudentResource(String p_name, String p_cip) {
m_name = p_name;
m_cip = p_cip;
}
//Default constructor
public StudentResource() {
}
public String getName() {
return m_name;
}
public void setName(String p_name) {
m_name = p_name;
}
public String getCip() {
return m_cip;
}
public void setCip(String p_cip) {
m_cip = p_cip;
}
}