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
一般情况下,除了一些表单注解,body 参数不需要任何注解。这实际上是 JAX=RS 将如何确定它是主体的方式。所以你只能有一个未注释的参数,因为你只能有一个主体。因此,只需更改您拥有的内容(只需删除@BeanParam. 只要您有一个 JSON 提供程序,它就应该可以工作。
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(Widget widget) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |