jaxb - Jackson 编码(marshal) XMLAttribute 获取 "null"值

标签 jaxb annotations jackson xml-attribute

我有 JAXB/Jackson 编码问题。我有这样的注释

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

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

如果输出是 XML,这可以正常工作。但是如果我切换到 JSON,使用 Jackson,输出是
xxxxxxx, "private":null, xxxxxxxx

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

最佳答案

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

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

  • 你可以注释你的 POJO
    @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
  • 您可以设置 ObjectMapper 的默认行为以从序列化中排除空值。您可以通过调用:

    setSerializationInclusion(Inclusion.NON_NULL);

    ...在 ObjectMapper 实例上。
  • 关于jaxb - Jackson 编码(marshal) XMLAttribute 获取 "null"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17445310/

    相关文章:

    java - 处理 XSD 生成的类的多个版本

    java - JAXB::解码 SOAP 响应并在嵌套对象中获取 null

    java - jaxb xjc - 如何生成单元测试文件

    ios - 来自 MapView Annotation-iOS 的缩略图

    java - 智能标注

    java - 使用 Jackson 将字符串转换为对象

    java - Java 中 toString 和 serialize 的区别

    java - Eclipse APT 编译速度变慢

    java - 反序列化json字符串的反序列化异常

    java - Jersey:硬编码 POST/PUT ObjectMapper,不需要 Content-Type header