0

I have the following csv file

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

I am looking for suggestions on how to handle a csv file that have a comma in value (eg cost).

I am using following code:

Class ResultFile

@JsonInclude(Include.NON_EMPTY)
public class ResultFile {

    private String id;
    private String productCode;
    private double cost;   
}

Controller

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;

The error

E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[DispatcherServlet]: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type double from String "524,07": not a valid Double value at [Source: (com.fasterxml.jackson.dataformat.csv.impl.UTF8Reader); line: 2, column: 14] (through reference chain: com.ibm.gr.melissa.beans.ResultFile["cost"]) at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67) at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1679) at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:935) at com.fasterxml.jackson.databind.deser.std.NumberDeserializers$DoubleDeserializer._parseDouble(NumberDeserializer

Jimmysnn
  • 583
  • 4
  • 8
  • 30
  • 1
    That CSV format is not valid JSON format, so you will need to provide a custom deserializer. See similar question here: https://stackoverflow.com/questions/26725278/how-to-deserialize-a-float-value-with-a-localized-decimal-separator-with-jackson – Pieterjan Deconinck Mar 24 '20 at 10:20
  • @Pieterjan Deconinck You are right – Jimmysnn Mar 24 '20 at 11:28

0 Answers0