在PUT Restful服务中使用JSON对象

8
我正在尝试在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个回答

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的信息:

注意:本文中涉及的html标签已保留。

我尝试过了,但是没有成功。也许我在调用服务时没有指定MediaType ;) 谢谢 - ffleandro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接