【发布时间】:2016-12-22 16:48:01
【问题描述】:
我正在尝试使用 Spring 的 RestTemplate 自动反序列化 XML 格式的响应。我正在使用 Jackson 的 jackson-dataformat-xml 模块,Spring Boot 设置为自动配置。我想在要反序列化的类中使用 JAXB 注释,但它似乎不起作用。这是我希望班级看起来像的示例:
@XmlRootElement(name="Book")
public class Book {
@XmlElement(name="Title")
private String title;
@XmlElement(name="Author")
private String author;
}
这基于以下 XML 示例:
<Book>
<Title>My Book</Title>
<Author>Me</Author>
</Book>
但是,对于像上面那样注释的类,字段总是设置为null。我做了一些实验,发现如果我使用 Jackson 的 @JsonProperty 注释子元素,反序列化是有效的:
@XmlRootElement(name="Book")
public class Book {
@JsonProperty("Title")
private String title;
@JsonProperty("Author")
private String author;
}
它有效,但不知何故我觉得它有点尴尬。有没有办法让 JAXB 注释像我的第一个示例一样工作?
Jackson 为 XML 数据绑定提供了jackson-module-jaxb-annotations 模块以使用 JAXB 注释。但是,我不确定如何设置RestTemplate 使用的ObjectMapper 以使用此模块。
【问题讨论】:
-
你解决了吗?我实际上也在尝试做同样的事情
-
@dalvarezmartinez1 是的。请在下面查看我的解决方案。
标签: java spring spring-mvc spring-boot jaxb