Как проанализировать двойную кавычку в начале поля в CSV, используя jackson-dataformat-csv CsvMapperJAVA

Программисты JAVA общаются здесь
Гость
Как проанализировать двойную кавычку в начале поля в CSV, используя jackson-dataformat-csv CsvMapper

Сообщение Гость »

Я хотел бы проанализировать следующий файл csv:

Код: Выделить всё

Name;Quantity
"foo;bar";1
"foo"bar;2
Ожидаемый результат:

Код: Выделить всё

[[foo;bar , 1] , ["foo"bar , 2]]
На данный момент мой код следующий:

Код: Выделить всё

CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(List.class).withColumnSeparator(';');
MappingIterator it = mapper.readerForListOf(String.class)
.with(schema)
.with(CsvParser.Feature.WRAP_AS_ARRAY)
.readValues(textInput);
Проблема в том, что Джексон выдает ошибку из-за того, что первое поле второй строки начинается с кавычки, но не заканчивается единицей (

Код: Выделить всё

com.fasterxml.jackson.databind.JsonMappingException: Unexpected character ('b') Expected column separator character (';' (code 59)) or end-of-line at [...]
).
Если кавычки начинаются с середины поля, проблем нет.
Я могу решить проблема для второй строки, изменив CsvSchema на:

Код: Выделить всё

CsvSchema schema = mapper.schemaFor(List.class).withColumnSeparator(separator).withoutQuoteChar();
но в этом случае первая строка анализируется неправильно, поскольку определяется, что она имеет 3 столбца.
Есть ли способ проанализировать CSV файлы, содержащие поля, начинающиеся с кавычек и с полями, заключенными в кавычки?

Подробнее здесь: https://stackoverflow.com/questions/781 ... aformat-cs

Вернуться в «JAVA»