杰克逊忽略了XmlAccessorType.NONE

时间:2016-01-14 13:11:06

标签: java json jackson

我的pojo类使用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,则jackson会抛出未知属性异常。

我尝试将JaxbAnnotationIntrospector添加到objectmapper中,但它没有帮助mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector());

1 个答案:

答案 0 :(得分:1)

我不明白为什么static与此相关, 它会影响可用属性的发现(无自动发现),但不会影响如何处理没有Bean属性的JSON / XML属性。

这里的差异可能更多是由于JAXB和Jackson的默认值之间的差异:默认情况下,JAXB默默地忽略它无法识别的任何内容。默认情况下,杰克逊在不认识某事时抛出异常。

如果需要,您可以将XmlAccessorType(XmlAccessType.NONE)配置为默认忽略这些问题:

napper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

这样的行为类似于JAXB。