簡體   English   中英

Jaxb REST JSON知道哪個參數為空以及哪個參數未發送

[英]Jaxb REST JSON to know which param is empty and which param was not sent

我有一個帶有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 ,並將null設置為值bar3

但是 ,在服務器上,我的類字段都帶有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  

如果您嘗試反序列化

{
}  

那么沒有任何輸出到控制台-未訪問setter。
這樣您就可以在設置器中檢查值

   @XmlElement
   private Double bar3;  

   public void setBar3(Double bar3)
   {
      if (bar3 == null)
      {
         this.bar3 = new Double(-1);   
      }
      this.bar3 = bar3;
   } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM