2016-08-21 65 views
2

收到这是对这个问题的后续问题:JSON对象与空成员

sending nested json object using postman

我试图JSON对象发送到使用邮差泽西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

如果您只是想将您的json数据映射到对象,那么只需删除@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

+0

我什么时候应该接受不BeanParam注释JSON对象什么时候应该使用它? –

+0

检查我编辑的答案。 '@ BeanParam'是一种允许您轻松访问其他请求信息(标题,查询参数等)的机制。 –