带有 application/json 和 BeanParam 的 POJO 中的空字段

Ajo*_*tia 4 rest json jax-rs json-deserialization

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

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(@BeanParam Widget widget) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

Widget 是一个 POJO bean 类,即 2 个名为foo&bar类型的私有字段,String带有公共 getter 和 setter,以及一个公共无参数构造函数。

POST 请求正文是:

{ "foo": "Some text", "bar": "Some more text" }
Run Code Online (Sandbox Code Playgroud)

并有标题 Content-Type: application/json

在触发此请求时,该createWidget方法获取一个Widget对象作为参数,但两个String字段都是null.

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

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

Pau*_*tha 5

一般情况下,除了一些表单注解,body 参数不需要任何注解。这实际上是 JAX=RS 将如何确定它主体的方式。所以你只能有一个未注释的参数,因为你只能有一个主体。因此,只需更改您拥有的内容(只需删除@BeanParam. 只要您有一个 JSON 提供程序,它就应该可以工作。

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(Widget widget) {
Run Code Online (Sandbox Code Playgroud)