【问题标题】:How do I get the JSON body in Jersey?如何在泽西岛获得 JSON 正文?
【发布时间】:2016-12-15 06:41:17
【问题描述】:

在泽西岛有 @RequestBody 等价物吗?

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

我希望能够以某种方式获取 POSTed JSON。

【问题讨论】:

  • 请温柔地标记对所提问题的回答,如果不合适,请更新。

标签: java rest jersey dropwizard


【解决方案1】:

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

@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);
}

【讨论】:

    【解决方案2】:
    @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));
    }
    

    【讨论】:

      【解决方案3】:

      如果您希望您的 json 作为 Vote 对象,那么只需在您的 mathod 参数中使用 @RequestBody Vote body ,Spring 会自动将您的 Json 转换为 Vote Object。

      【讨论】:

      • 你能澄清一下吗?
      猜你喜欢
      • 1970-01-01
      • 2011-10-14
      • 2015-01-05
      • 2015-07-10
      • 2014-10-06
      • 1970-01-01
      • 2011-08-02
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多