java - com.fasterxml.jackson.databind.JsonMappingException 没有从字符串值('1')反序列化的字符串参数构造函数/工厂方法
问题描述
我正在调用以 XML 形式返回输出的数据库存储过程。
数据库输出
<ROWSET>
<ROW>
<EMPLOYEEID>1</EMPLOYEEID>
<EMPLOYEENAME>SEAN</EMPLOYEENAME>
<DEPT>ACOUNTING</DEPT>
</ROW>
<ROW>
<EMPLOYEEID>6</EMPLOYEEID>
<EMPLOYEENAME>KAREN</EMPLOYEENAME>
<DEPT>HR</DEPT>
</ROW>
</ROWSET>
我正在使用 Jackson 将 XML 字符串转换为 java 对象。我创建了一个支持 java 类来将 XML 映射到 java 对象
@JacksonXmlRootElement(localName = "ROWSET")
public class RowSet {
@JacksonXmlProperty(localName = "ROW")
private Row [] row;
public RowSet() {
}
public Row [] getRow() {
return row;
}
public void setRow(Row [] row) {
this.row = row;
}
}
class Row {
@JacksonXmlProperty(localName = "EMPLOYEEID")
private String employeeId;
@JacksonXmlProperty(localName = "EMPLOYEENAME")
private String employeeName;
@JacksonXmlProperty(localName = "DEPT")
private String dept;
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
}
从字符串 xml 创建 java 对象的代码
public static void main(String ... args){
String ouputput= getEmployeeData();// DB call to get data as xml string
XmlMapper xmlMapper = new XmlMapper();
RowSet rowSet= xmlMapper.readValue(ouputput, RowSet.class);
System.out.println(rowSet.getRow().length);
}
我收到以下异常
com.fasterxml.jackson.databind.JsonMappingException:无法构造 com.org.employee.Row 的实例,没有从字符串值('1')反序列化的字符串参数构造函数/工厂方法
解决方案
XML 中的数组应该有一个在您的 XML 文本中不存在Row
的包装器(除了)。告诉杰克逊不要寻找包装,例如RowSet
@JacksonXmlProperty(localName = "ROW")
@JacksonXmlElementWrapper(useWrapping = false)
private Row[] row;
推荐阅读
- javascript - Select2 下拉搜索正在消失/未找到结果
- reactjs - 反应迭代 json api 到 setState 变量
- python - 附加维度 numpy 数组
- php - 在 Laminas API 工具中使用 Zend Framework 1 库 - 自动加载供应商前缀类
- windows - 检查添加到 ssh 代理的密钥
- scroll - 如何在 Emacs 中平滑滚动?
- c# - 实体框架 SqlQuery 无故失败 (ObjectDisposedException)
- python - 计算每个元素及其邻居的总和时缺少一项
- cypress - 赛普拉斯 - Windows - 出现错误“npm ERR!在 cypress@6.1.0 安装后脚本失败。”
- android - Android:根据国家/地区测试条件功能交付