我正在尝试在Java中实现RESTful服务,该服务通过PUT请求接收JSON对象并自动映射到Java对象。我设法用XML做到这一点,但我不能用JSON做到这一点。这就是我想要做的事情:
@PUT
@Consumes(MediaType.APPLICATION_XML)
public String putTodo(JAXBElement<Route> r) {
Route route = r.getValue();
route.toString();
System.out.println("Received PUT XML Request");
return "ok";
}
这样可行,但使用JSON会类似,但我不能使用JAXB,可以吗?
@PUT
@Consumes(MediaType.APPLICATION_JSON)
public String putTodo(<WHAT DO I PUT HERE>) {
Route route = r.getValue();
route.toString();
System.out.println("Received PUT JSON Request");
return "ok";
}
答案 0 :(得分:6)
默认情况下,Jersey将使用JAXB通过利用Jettison库来处理JSON消息。
所以你可以做到以下几点:
@PUT
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public String putTodo(JAXBElement<Route> r) {
Route route = r.getValue();
route.toString();
System.out.println("Received PUT XML/JSON Request");
return "ok";
}
有关将Jettison与JAXB一起使用的更多信息: