Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jaxb REST JSON可以知道哪个参数是空的,哪个参数没有发送_Java_Json_Rest_Jaxb - Fatal编程技术网

Java Jaxb REST JSON可以知道哪个参数是空的,哪个参数没有发送

Java Jaxb REST JSON可以知道哪个参数是空的,哪个参数没有发送,java,json,rest,jaxb,Java,Json,Rest,Jaxb,我有一个带有REST服务的web应用程序。我有一个带有JAXB注释的bean类: @XmlRootElement(name = "foo") class Foo { @XmlElement private String bar1; @XmlElement private Double bar2; @XmlElement private Double bar3; } 然后,我使用JSON发送请求: { "foo" : {

我有一个带有REST服务的web应用程序。我有一个带有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,并将值bar3设置为null

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

使用属性访问字段。
示例

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  
如果您要尝试反序列化

{
   "bar" : ""
}  
{
}  
然后没有输出到控制台-未访问setter。
所以您可以在setter中检查值

   @XmlElement
   private Double bar3;  

   public void setBar3(Double bar3)
   {
      if (bar3 == null)
      {
         this.bar3 = new Double(-1);   
      }
      this.bar3 = bar3;
   } 
以下内容可能会有所帮助: