我如何在泽西岛获得 JSON body?

How do I get the JSON body in Jersey?

在泽西岛有 @RequestBody 对应物吗?

@POST()
@Path("/{itemId}")
@Consumes(MediaType.APPLICATION_JSON)
public void addVote(@PathParam("itemId") Integer itemId, @RequestBody body) {
    voteDAO.create(new Vote(body));
}

我希望能够以某种方式获取发布的JSON。

您不需要任何注释。唯一没有注释的参数将是请求主体的容器:

@POST()
@Path("/{itemId}")
@Consumes(MediaType.APPLICATION_JSON)
public void addVote(@PathParam("itemId") Integer itemId, String body) {
    voteDAO.create(new Vote(body));
}

或者您可以将正文解析为对象:

@POST()
@Path("/{itemId}")
@Consumes(MediaType.APPLICATION_JSON)
public void addVote(@PathParam("itemId") Integer itemId, Vote vote) {
    voteDAO.create(vote);
}
@javax.ws.rs.Consumes(javax.ws.rs.core.MediaType.APPLICATION_JSON) 

应该已经在这里帮助你了,只是其余参数必须使用注释标记,因为它们是不同类型的参数 -

@POST()
@Path("/{itemId}")
@Consumes(MediaType.APPLICATION_JSON)
public void addVote(@PathParam("itemId") Integer itemId, <DataType> body) {
    voteDAO.create(new Vote(body));
}

如果你想把你的 json 作为投票对象,那么简单地在你的 mathod 参数中使用 @RequestBody 投票正文,Spring 会自动将你的 Json 转换为投票对象。