这是这个问题的后续问题:
sending nested json object using postman
我正在尝试使用Postman将Json对象发送到Jersey Web服务。
我这样做:
在泽西岛方面:
@Path("/testMethod")
@POST
@UnitOfWork
public short testMethod(@NotNull @BeanParam Test test)
{ ... }
测试类是一个简单的类:
public class Test
{
public String field;
public Test()
{
}
}
在邮递员方面,我发送一条POST消息,Body设置为raw,内容类型设置为Json(application / json)。身体本身是:
{
"field" : "12"
}
发送此请求时,收到的参数中的field
为空......为什么会这样?
答案 0 :(得分:0)
如果您只想将json数据映射到object,那么只需删除@BeanParam
即可正常工作。
但是,如果要使用@BeanParam
功能,则应从第一个参数中删除该注释,并添加使用@BeanParam
注释的第二个参数:
@Path("/testMethod")
@POST
@UnitOfWork
public short testMethod(@NotNull Test test, @BeanParam ExtraTest extraTest)
{ ... }
然后使用其他字段映射实现ExtraTest类:
public class ExtraTest
{
@HeaderParam("Accept")
public String acceptHeader;
/*
your other header params, path params and so on...
...
*/
}
@BeanParam
是一项功能,可让您轻松访问其他请求信息(标题字段,查询参数等)。它不能与您的json数据对象映射混合。
更多信息:
https://abhirockzz.wordpress.com/2014/07/21/new-in-jax-rs-2-0-beanparam-annotation/
https://jersey.java.net/apidocs/2.22/jersey/javax/ws/rs/BeanParam.html