spring - 使用 JAXB 编组不同类型的对象列表
问题描述
我使用 Spring 和 JAXB 并希望编组不同 DTO 对象的列表,因此所需的 XML 响应应如下所示:
<root>
<dto_list>
<dto1>
<name>xxx</name>
</dto1>
<dto2>
<location>xxx</location>
</dto2>
</dto_list>
</root>
假设类对象是:
@XmlRootElement(name = "Dto1")
@XmlAccessorType(XmlAccessType.NONE)
public class Dto1 {
@XmlElement
private String name;
// setter/getters
}
和
@XmlRootElement(name = "Dto2")
@XmlAccessorType(XmlAccessType.NONE)
public class Dto2 {
@XmlElement
private String location;
// setter/getters
}
和包装类:
@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.NONE)
public class DTOsWrapper {
private List<Object> dto;
public void setDto(List<Object> dto) {
this.dto = dto;
}
@XmlElementWrapper(name = "dto_list")
@XmlElements({
@XmlElement(name = "dto1", type = Dto1.class),
@XmlElement(name = "dto2", type = Dto2.class)
})
public List<Object> getDto() {
return dto;
}
}
和端点:
@RestController
public class DTOEndpoint {
@Autowired
private IDTOService service;
@RequestMapping(value = "/restxml", produces = "application/xml")
public Object retrieveAllDTOs() {
DTOsWrapper o = service.findDtos(); //returns a DTOsWrapper obj of a list containing Dto objs, i.e Dto1, Dto2 etc
return o;
}
我得到 {"error": "org.springframework.http.converter.HttpMessageConversionException: 无法为类 [class <>to.DTOsWrapper] 实例化 JAXBContext:IllegalAnnotationExceptions 的计数;有人知道吗?
解决方案
推荐阅读
- python - Pyomo CBC求解器错误:求解器(cbc)返回非零返回码(3221225781);Solver (cbc) 没有正常退出
- ruby-on-rails - 在 Rails 路由中共享两个不同控制器的路径?
- php - 获取具有自定义身份验证中间件的登录用户的 ID - Laravel
- python - 字典列表到 Python 中的嵌套字典列表
- javascript - 在 tinymce 中添加自定义图片上传
- python - Python regex:删除所有未附加到单词的特殊字符和数字
- java - 从 sql server 检索数据对应于 Android Studio 中的 Edittext 值
- pytorch - 我们不能运行导入到 pytorch 的 onnx 模型吗?
- webpack - 如何使用 webpack 为特定块设置特定名称,同时为其他块使用哈希?
- android - 时间不显示在 android 9 及更高版本的通知上