2016-03-07 65 views
0

我正在研究需要能夠處理PUT/POST上可能是已知超集的JSON有效負載的API POJO。JAX-RS/JAXB JSON到POJO - 忽略JSON中POJO中不存在的字段

例如:

@XmlRootElement 
public FruitCounter 
{ 
    int numberOfApples; 
    int numberOfOranges; 

    public int getNumberOfApples() 
    { 
     return this.numberOfApples(); 
    } 

    public int setNumberOfApples(int numberOfApples) 
    { 
     this.numberOfApples = numberOfApples; 
    } 

    public int getNumberOfOranges() 
    { 
     return this.numberOfOranges(); 
    } 

    public int setNumberOfOranges(int numberOfOranges) 
    { 
     this.numberOfOranges = numberOfOranges; 
    } 
} 

將產生大致如下JSON當執行一個GET:

{ 
    numberOfApples: 4, 
    numberOfOranges: 7 
} 

我們需要能夠處理一個JSON有效載荷像下面這樣,更新蘋果和橘子的數量,但對梨不做任何事情。

{ 
    numberOfApples: 9, 
    numberOfOranges: 19, 
    numberOfPears: 21 
} 

有沒有乾淨的方法可以做到這一點?

+0

我認爲,你想要的作品,Java可以處理numberOfPears屬性,因爲它是未知的。你嘗試和你得到什麼? –

回答

1

在上面添加@JsonIgnoreProperties(ignoreUnknown = true)類的

@JsonIgnoreProperties(ignoreUnknown = true)  
    @XmlRootElement 
    public FruitCounter 
    { 
     int numberOfApples; 
     int numberOfOranges; 

     public int getNumberOfApples() 
     { 
      return this.numberOfApples(); 
     } 

     public int setNumberOfApples(int numberOfApples) 
     { 
      this.numberOfApples = numberOfApples; 
     } 

     public int getNumberOfOranges() 
     { 
      return this.numberOfOranges(); 
     } 

     public int setNumberOfOranges(int numberOfOranges) 
     { 
      this.numberOfOranges = numberOfOranges; 
     } 
    } 

還要檢查this的問題,這似乎是同樣的問題。

+0

感謝您的回覆! 看來,這將排序問題。 但是,目前我們沒有對特定Jackson庫的任何顯式依賴關係,並且我們只使用了標準Java 7+註釋,例如在這裏看到的註釋:https://docs.oracle.com/javase/7/docs/api/ javax/xml/bind/annotation/package-frame.html 我是否認爲唯一能獲得與JsonIgnoreProperties註釋匹配的功能的方法是使用特定的Jackson codehaus或fasterxml? – SamF

+0

我相信是這樣,我不知道有沒有辦法做到這一點.. – Tiago

+0

感謝您的幫助!我們正在使用wildxly進行部署,無論如何它使用的是fastxml實現,所以對我們來說這不是太大。 – SamF