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