我遇到了JAXB / Jackson编组问题。我有这样的注释
@XmlAttribute(name = "private")
protected Boolean mPrivate;
如果mPrivate
变量为null
,我希望此属性不存在。
如果输出是XML,这可以正常工作。但是如果我使用Jackson切换到JSON,输出就是
xxxxxxx, "private":null, xxxxxxxx
任何人都知道为什么会发生这种情况以及如何解决这个问题?提前谢谢。
答案 0 :(得分:5)
Jackson与JAXB注释兼容。因此,JAXB不支持XmlAttributes的默认值,因为当序列化为XML时,如果值为 null ,则默认行为是将它们保留为out。
为JSON实现此目的有几个选项。
您可以使用注释来标记您的POJO @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
您可以设置ObjectMapper的默认行为,以从序列化中排除空值。您可以致电:
setSerializationInclusion(Inclusion.NON_NULL);
...在ObjectMapper实例上。