将 pojo 字段序列化为 xml 时忽略 xml 标签

Ignore xml tags while serializing pojo fields to xml

我正在使用 jackson 库将 POJO 映射到 XML。

compile ('com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.0')

在序列化时我需要忽略一些字段。这是我的 POJO class。例如,字段 lineNumber 应该被忽略。

@NoArgsConstructor
@AllArgsConstructor
@Getter
@XmlAccessorType(XmlAccessType.FIELD)
public class InvoiceLineItem {

    @JacksonXmlProperty(localName = "LineNumber")
    @XmlTransient
    private Integer lineNumber;

    @JacksonXmlProperty(localName = "ProductCode")
    @XmlTransient
    private String productCode;

    @JacksonXmlProperty(localName = "ProductDescription")
    @XmlTransient
    private String productDescription;
}

我正在使用 @XmlTransientXmlAccessorType 来忽略这些字段。但是在序列化时不会忽略用 XmlTransient 注释的 lineNumber 字段。

尝试添加 @JsonProperty(access = Access.WRITE_ONLY) lineNumber 字段的注释。

甚至认为它看起来像 JSON 东西, Jackson XmlMapper 识别注释并做出相应的反应。

编辑
XmlMapper 应该支持 JSON 序列化的结论是以下不正确推理尝试的示例:

  1. 人终有一死。
  2. 苏格拉底终有一死。
  3. 所以,人人都是苏格拉底

XmlMapper 不是 ObjectMapper 的包装器 class。 它出现在 ObjectMapper 之后并且似乎共享许多功能, 比如一些 JSON 注释的处理。