【发布时间】:2016-03-17 18:11:10
【问题描述】:
我在一个控制器类中定义了一个REST服务操作,如图:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("create")
public Response createWidget(@BeanParam Widget widget) {
...
}
Widget 是一个 POJO bean 类,即 2 个名为 foo 和 bar 的私有字段,类型为 String,带有公共 getter 和 setter,以及一个公共无参数构造函数。
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 内容的注解应该是什么。
非常感谢您的帮助... - 开心
【问题讨论】:
-
消息正文参数应该有 no 注释。如果您删除
@BeanParam,并收到类似“No MessageBodreadter for type Wdiget and application/json”之类的错误,那么您需要一个 JSON 提供程序 -
谢谢,@peeskillet。那行得通。因为找到了 JacksonJaxbJsonProvider,所以我不需要做任何其他事情。如果您将评论转换为答案,我会接受。
标签: json rest jax-rs json-deserialization