使用Jackson序列化XML时,如何单独重命名列表子标签?求助
解决Jackson XML序列化列表子标签名称问题
要实现父标签为<albums>、子标签为<album>的XML结构,只需结合Jackson XML的两个注解分别控制列表的包裹标签和子元素标签:
修改Artist类
在getAlbums()方法上添加以下注解:
@JacksonXmlElementWrapper(localName = "albums"):指定列表的外层包裹标签为<albums>@JacksonXmlProperty(localName = "album"):指定列表中每个Album元素的标签为<album>
修改后的Artist类代码:
public class Artist { private String name; private List<Album> albums = new ArrayList<>(); public String getName() { return name; } @JacksonXmlElementWrapper(localName = "albums") @JacksonXmlProperty(localName = "album") public List<Album> getAlbums() { return albums; } }
注解作用说明
@JacksonXmlElementWrapper显式指定外层包裹标签名,确保父标签保持为<albums>@JacksonXmlProperty覆盖默认的子元素标签名,将原本的<albums>替换为<album>
修改完成后,序列化生成的XML即可符合预期格式:
<Artist> <name>Some name</name> <albums> <album name="Some name1" year="1985"/> <album name="Some name2" year="1986"/> </albums> </Artist>
内容的提问来源于stack exchange,提问作者Nikita Zakharov
相关产品推荐
相关产品推荐

