2016-01-14 70 views
0

我的pojo類用XmlAccessorType.NONE進行了註釋。傑克遜正在忽略XmlAccessorType.NONE

@XmlRootElement 
@XmlAccessorType(XmlAccessType.NONE) 
public class Human { 

    @XmlElement(name="name") 
    private String name; 

    private int age 

} 

即時嘗試閱讀的JSON包含屬性名稱和年齡。如果我使用JsonIgnoreProperties註解類(ignoreUnknown = true)一切正常但是,如果我嘗試使用註釋XmlAccessorType(XmlAccessType.NONE)intead,傑克遜引發未知屬性異常。

我試圖JaxbAnnotationIntrospector加入到objectmapper,但它並沒有幫助mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector());

回答

1

我不明白爲什麼XmlAccessorType(XmlAccessType.NONE)會與此有關, 它會影響可用的屬性發現(無自動發現),但不如何處理沒有Bean屬性的JSON/XML屬性。

這裏的區別可能更多是由於JAXB和Jackson的默認值之間的差異:默認情況下,JAXB默默地忽略它無法識別的任何內容。默認情況下,Jackson在發現異常時拋出異常。

如果你願意,你可以配置ObjectMapper忽略默認情況下這些問題:

napper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

使行爲與JAXB類似。

+1

將配置值FAIL_ON_UNKNOWN_PROPERTIES設置爲false修復了我的問題 – hnnn