0

我有一个带有 REST 服务的网络应用程序。我有一个带有 JAXB 注释的 bean 类:

@XmlRootElement(name = "foo")
class Foo {
    @XmlElement
    private String bar1;

    @XmlElement
    private Double bar2;

    @XmlElement
    private Double bar3;
}

然后,我使用 JSON 发送请求:

{
    "foo" : {
        "bar1" : "1",            
        "bar3" : ""
    }
}

在我想要的请求中:更新值bar1,并将 null 设置为值bar3

但是,在服务器上,我的 class' 字段都带有null,我的意思是,bar2是 null,因为我没有发送它,而bar3也是 null,因为我发送它是空的。问题是:我如何才能在服务器上了解发送了哪些参数以在其中设置 null,哪些参数没有发送,我应该忽略它?

4

1 回答 1

0

使用属性访问字段。
例子

public class Foo
{
   private Double bar;  

   public Double getBar()
   {
      return bar;
   }

   public void setBar(Double bar)
   {
      System.out.println("I am in setter! " + bar); 
      this.bar = bar;
   }
}  

现在,如果您尝试反序列化

{
   "bar" : ""
}  

输出到控制台是

I am in setter! null  

如果您尝试反序列化

{
}  

然后没有输出到控制台 - 没有访问设置器。
所以你可以在setter中检查值

   @XmlElement
   private Double bar3;  

   public void setBar3(Double bar3)
   {
      if (bar3 == null)
      {
         this.bar3 = new Double(-1);   
      }
      this.bar3 = bar3;
   } 
于 2012-09-21T14:02:13.377 回答