2016-03-07 71 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