邮递员发送的Json对象收到空成员

时间:2016-08-21 09:17:15

标签: java json postman

这是这个问题的后续问题:

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为空......为什么会这样?

1 个答案:

答案 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