Jackson marshal XMLAttribute获得“null”值

时间:2013-07-03 10:15:27

标签: jaxb annotations jackson xml-attribute

我遇到了JAXB / Jackson编组问题。我有这样的注释

@XmlAttribute(name = "private")
protected Boolean mPrivate;

如果mPrivate变量为null,我希望此属性不存在。

如果输出是XML,这可以正常工作。但是如果我使用Jackson切换到JSON,输出就是

xxxxxxx, "private":null, xxxxxxxx

任何人都知道为什么会发生这种情况以及如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:5)

Jackson与JAXB注释兼容。因此,JAXB不支持XmlAttributes的默认值,因为当序列化为XML时,如果值为 null ,则默认行为是将它们保留为out。

为JSON实现此目的有几个选项。

  1. 您可以使用注释来标记您的POJO @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)

  2. 您可以设置ObjectMapper的默认行为,以从序列化中排除空值。您可以致电:

    setSerializationInclusion(Inclusion.NON_NULL);

    ...在ObjectMapper实例上。