如何使用Jackson反序列化含属性与值的XML元素
解决Jackson XML反序列化中标签文本内容为null的问题
问题原因
你当前的代码错误地将bitstrm字段映射为<bitstream>的子元素,但实际上你需要的是该标签本身的文本内容,所以导致字段始终为null。无需自定义反序列化器,使用Jackson提供的@JacksonXmlText注解即可解决。
修改后的代码
@JsonIgnoreProperties(ignoreUnknown = true) public class Bitstream { @JacksonXmlProperty(isAttribute = true) private String encoding; @JacksonXmlText // 用该注解获取XML标签的文本内容 private String bitstrm; public String getEncoding() { return encoding; } public void setEncoding(String encoding) { this.encoding = encoding; } public String getBitstream() { return bitstrm; } public void setBitstream(String bitstrm) { // 修正setter方法名,与getter保持JavaBean规范一致 this.bitstrm = bitstrm; } }
关键说明
@JacksonXmlText注解专门用于绑定XML元素的文本内容,正好匹配你<bitstream>标签同时包含属性和文本值的结构。- 修正setter方法名是为了符合JavaBean规范,确保Jackson能够正确识别并注入值(如果字段命名和getter/setter对应不上,Jackson可能无法找到对应的赋值方法)。
内容的提问来源于stack exchange,提问作者John Ormerod
相关产品推荐
相关产品推荐

