5

我对 JAXB / Jackson 编组有疑问。我有这样的注释

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

我希望如果mPrivate变量是null.

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

xxxxxxx, "private":null, xxxxxxxx

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

4

1 回答 1

5

Jackson 与 JAXB 注释兼容。因此,JAXB 不支持 XmlAttributes 的默认值,因为在序列化为 XML 时,如果 value 为null ,则默认行为是将它们排除在外。

有几个选项可以为 JSON 实现这一目标。

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

  2. 您可以设置 ObjectMapper 的默认行为以从序列化中排除空值。您可以通过调用:

    setSerializationInclusion(Inclusion.NON_NULL);

    ...在 ObjectMapper 实例上。

于 2013-07-03T12:17:43.813 回答