首页 文章

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

提问于
浏览
2

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

使用邮递员发送嵌套的 json 对象

我正在尝试使用 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

    如果您只想将 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是允许您轻松访问其他请求信息的功能(标题字段,查询参数 etc.)。它不能与您的 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

相关问题