Jackson marshal XMLAttribute获得"null"值

tic*_*fab 5 annotations jaxb xml-attribute jackson

我对JAXB/Jackson编组有一个问题.我有这样的注释

@XmlAttribute(name = "private")
protected Boolean mPrivate;
Run Code Online (Sandbox Code Playgroud)

如果mPrivate变量是,我希望这个属性不存在null.

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

xxxxxxx, "private":null, xxxxxxxx
Run Code Online (Sandbox Code Playgroud)

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

Pep*_*ter 5

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

有几个选项可以实现JSON.

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

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

    setSerializationInclusion(Inclusion.NON_NULL);

    ...在ObjectMapper实例上.