2013-07-03 21 views
5

我有JAXB/Jackson编组问题。我有这样的注解杰克逊元帅XMLAttribute获取“null”值

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

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

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

xxxxxxx, "private":null, xxxxxxxx 

任何人有一个想法,为什么出现这种情况,如何解决?提前致谢。

+0

看到这个问题:http://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is- null –

回答

5

Jackson与JAXB注释兼容。因此,JAXB不支持XmlAttributes的默认值,因为如果在序列化为XML时值为null,则默认行为是将其忽略。

有几个选项可以实现JSON。

  1. 您可以用标注 @JsonSerialize您的POJO(包括= JsonSerialize.Inclusion.NON_NULL)

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

    setSerializationInclusion(Inclusion.NON_NULL);

    ...在ObjectMapper实例上。

+0

我发现可以在类级别或字段/方法级别添加@JsonSerialize。如果应用于课堂级别,则仍然可以在字段/方法级别进行覆盖。 – Blaine