我有以下 csv 文件
id;productCode;cost 123132;10204;524,07 123132;10205;222,02
我正在寻找有关如何处理具有逗号值(例如成本)的 csv 文件的建议。
我正在使用以下代码:
类结果文件
@JsonInclude(Include.NON_EMPTY)
public class ResultFile {
private String id;
private String productCode;
private double cost;
}
控制器
File temporaryFile = new File("input.csv");
CsvSchema csvSchema = CsvSchema.emptySchema().withHeader().withColumnSeparator(';').withoutQuoteChar();
CsvMapper csvMapper = new CsvMapper();
csvMapper.enable(SerializationFeature.INDENT_OUTPUT);
List<Object> data = csvMapper.readerFor(ResultFile.class).with(csvSchema).readValues(temporaryFile).readAll();
ObjectMapper mapper = new ObjectMapper();
String st = mapper.writeValueAsString(data);
System.out.println(mapper.defaultPrettyPrintingWriter().writeValueAsString(data));
return st;
错误
E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E:[Servlet 错误]-[DispatcherServlet]:com.fasterxml.jackson.databind.exc.InvalidFormatException:无法反序列化类型的值
double
来自字符串“524,07”:在 [Source: (com.fasterxml.jackson.dataformat.csv.impl.UTF8Reader) 处不是有效的 Double 值;行:2,列:14](通过引用链:com.ibm.gr.melissa.beans.ResultFile["cost"])在 com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67 ) 在 com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:935) 在 com.fasterxml.jackson.databind.deser 的 com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1679)。 std.NumberDeserializers$DoubleDeserializer._parseDouble(NumberDeserializer