在PUT Restful Service中使用JSON对象

时间:2011-04-19 16:03:22

标签: java json rest jaxb jersey

我正在尝试在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";
}

1 个答案:

答案 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一起使用的更多信息: