将 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;
}
我正在使用 @XmlTransient
和 XmlAccessorType
来忽略这些字段。但是在序列化时不会忽略用 XmlTransient 注释的 lineNumber
字段。
尝试添加 @JsonProperty(access = Access.WRITE_ONLY)
lineNumber
字段的注释。
甚至认为它看起来像 JSON 东西,
Jackson XmlMapper
识别注释并做出相应的反应。
编辑
XmlMapper 应该支持 JSON 序列化的结论是以下不正确推理尝试的示例:
- 人终有一死。
- 苏格拉底终有一死。
- 所以,人人都是苏格拉底
XmlMapper 不是 ObjectMapper 的包装器 class。
它出现在 ObjectMapper 之后并且似乎共享许多功能,
比如一些 JSON 注释的处理。
我正在使用 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;
}
我正在使用 @XmlTransient
和 XmlAccessorType
来忽略这些字段。但是在序列化时不会忽略用 XmlTransient 注释的 lineNumber
字段。
尝试添加 @JsonProperty(access = Access.WRITE_ONLY)
lineNumber
字段的注释。
甚至认为它看起来像 JSON 东西,
Jackson XmlMapper
识别注释并做出相应的反应。
编辑
XmlMapper 应该支持 JSON 序列化的结论是以下不正确推理尝试的示例:
- 人终有一死。
- 苏格拉底终有一死。
- 所以,人人都是苏格拉底
XmlMapper 不是 ObjectMapper 的包装器 class。 它出现在 ObjectMapper 之后并且似乎共享许多功能, 比如一些 JSON 注释的处理。