场景
excel导入数据时,空文本转换金额报错。
问题分析
如amount字段,后台明明设置了为空不转换啊:
if(StringUtils.isEmpty(amount)){
invoice.setAmount(new Double(0));
}else{
invoice.setAmount(Double.valueOf(amount));
}
但是仍然报错了。
原因是excel空文本,传到后台是"null"字符串。这样过滤条件过滤不掉它,Double.valueof(amount);会报错。
解决方案
代码处理
添加个条件判断,StringUtils.isEmpty(amount) || “null”.equals(amount)
都给他设置为null或者0,这样就可以了。
示例代码如下:
@Data
public class Invoice {
private Double amount;
private String checkCode;
public static void main(String[] args) {
Invoice invoice = new Invoice();
String amount="null";
String checkCode="null";
if(StringUtils.isEmpty(amount) || "null".equals(amount)){
invoice.setAmount(new Double(0)); // 如果为空或"null",金额设置为 0 或者 null
}else{
invoice.setAmount(Double.valueOf(amount));
}
if(StringUtils.isEmpty(checkCode) || "null".equals(amount)){
invoice.setCheckCode(null); // 如果为空或"null",校验码设置为 "" 或者 null
}else{
invoice.setCheckCode(checkCode);
}
System.out.println(JSON.toJSONString(invoice));
}
}