преобразовать файл CSV в json с запятой десятичного разделителя Джексона - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующий CSV-файл

id;productCode;cost
123132;10204;524,07 
123132;10205;222,02

Я ищу предложения о том, как обрабатывать CSV-файл со значением запятой (например, стоимость).

Я использую следующий код:

Класс ResultFile

@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: [Ошибка сервлета] - [DispatcherServlet]: com.faster xml .jackson.databind. ex c .InvalidFormatException: Невозможно десериализовать значение типа double из строки "524,07": недопустимое значение Double в [Source: (com.faster xml .jackson.dataformat.csv.impl.UTF8Reader) ; строка: 2, столбец: 14] (через цепочку ссылок: com.ibm.gr.melissa.beans.ResultFile ["cost"]) на com.faster xml .jackson.databind.ex c .InvalidFormatException.from (InvalidFormatException. java: 67) на com.faster xml .jackson.databind.DeserializationContext.weirdStringException (DeserializationContext. java: 1679) на com.faster xml .jackson.databind.DeserializationContext.handleWeirdStringValue . java: 935) на com.faster xml .jackson.databind.deser.std.NumberDeserializers $ DoubleDeserializer._parseDouble (NumberDeserializer

...