【发布时间】:2015-09-23 12:44:14
【问题描述】:
我在使用 fastxml 解析 CSV 文件中的双精度值时遇到了一些问题。
CSV 文件以标题 ID;Size;... 开头,下面的行是 1;27.98;...
我也有一个模型来映射 CSV 文件:
class Model{
private String id;
private double size;
//...
}
我还按照教程页面上的说明配置了 CSV-Parser:
//...
CsvSchema schema = CsvSchema.builder().addColumn("id").addColumn("size")
.setColumnSeparator(';')
.setEscapeChar('"')
.build();
CsvMapper mapper = new CsvMapper();
MappingIterator<Model> it = mapper.reader(Model.class).with(schema)
.readValues(new File(csvFile));
while(it.hasNext()){
Model row = it.next();
System.out.println(row);
}
当我运行解析器时,“id”被正确解析,但编译器抛出异常并显示消息 RuntimeJsonMappingException: Can not construct an instance of double from String value 'size':not a valid Double value。
我不明白到底是什么问题,因为值 27.98 是一个有效的双精度值。
我是否在配置中遗漏了什么?
【问题讨论】:
-
您能发一份您的 CSV 文件样本吗?
-
看起来它正在解析 csv 文件的标题。字符串 'size' 不是有效的双精度。
-
我也对此很感兴趣,并尝试了删除标题。这是 CSV 文件:
id;size;rad;thickness
01;27.98;1;1.5; -
如果您的 csv 没有标头,例如 '01;19.99;1;2',您得到的确切错误消息是什么? (不需要final ; 在行尾)
-
天哪。我一直在使用错误的 CSV。我从错误的标题中删除了标题:D。谢谢你的帮助。这当然是标题。 “大小”不是有效的双精度值:D