POJO中的空字段与application / json和BeanParam

时间:2015-12-11 18:26:33

标签: json rest jax-rs json-deserialization

我在控制器类中定义了一个REST服务操作,如下所示:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(@BeanParam Widget widget) {
    ...
}

Widget是一个POJO bean类,即2个名为foo&的私有字段。 bar类型String与公众吸气者& setters和public no-arg构造函数。

POST请求正文是:

{ "foo": "Some text", "bar": "Some more text" }

并且标题为Content-Type: application/json

在触发此请求时,createWidget方法会将Widget对象作为参数,但String个字段均为null

有人能告诉我要填充的字段还需要什么吗?我认为POJO bean类中可能需要一些注释。如果内容类型为application/x-www-form-urlencoded,那么我知道这些字段应注释@FormParam,但我不确定application/json内容的注释应该是什么。

非常感谢你的帮助...... - Ajoy

1 个答案:

答案 0 :(得分:4)

通常,除了某些表单注释外,body参数不需要任何注释。这实际上是JAX = RS将如何确定正文。因此,您只能拥有一个非注释参数,因为您只能拥有一个正文。所以只需更改你拥有的内容(只需删除@BeanParam。只要你有一个JSON提供者,它就可以工作。

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(Widget widget) {