2012-09-21 60 views
0

我有一個帶有REST服務的Web應用程序。我有一個bean類與JAXB註釋:Jaxb REST JSON知道哪個參數是空的,哪個參數沒有發送

@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

,在服務器上,我都與類的領域,我意思是說,bar2爲空,因爲我沒有發送它和bar3也爲null,因爲我發送它爲空。 問題是:我如何理解在服務器上哪些參數被設置爲null,哪個參數沒有發送,我應該忽略它?

+0

檢查值以下信息可能有助於:http://blog.bdoughan.com/2012/04/binding-to-json-xml-handling-null.html –

回答

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; 
    } 
相關問題