使用Jackson反序列化XML时,无法解析带属性节点的文本值问题求助
解决方案
问题的核心是XML中<Iphone>标签的属性和内部文本内容需要通过特定注解告诉Jackson如何映射到POJO字段:
- 对于XML标签的属性(如
os="ios"),需要用@JacksonXmlProperty(isAttribute = true)标记对应的POJO字段; - 对于XML标签的内部文本(如
13),需要用@JacksonXmlText标记对应的POJO字段。
修改后的POJO代码如下:
@lombok.Data public class PhoneDetails { @JacksonXmlProperty(localName = "Iphone") private Iphone iphoneDetails; } @lombok.Data public class Iphone { @JacksonXmlProperty(isAttribute = true) private String os; @JacksonXmlText private String iphone; }
注解说明
@JacksonXmlProperty(isAttribute = true):明确指定os字段对应<Iphone>标签的os属性,确保Jackson将属性值ios正确赋值给该字段;@JacksonXmlText:指定iphone字段对应<Iphone>标签内部的文本内容,这样13会被反序列化到该字段中。
主方法无需修改,保持原有配置即可。运行后,PhoneDetails对象中的iphoneDetails会正确包含os="ios"和iphone="13"的内容。
内容的提问来源于stack exchange,提问作者kailash salunke
相关产品推荐
相关产品推荐

