Я использую Jackson CSV для анализа файла CSV в POJO. Моя проблема в том, что если в строке CSV слишком мало столбцов, синтаксический анализатор не жалуется и просто устанавливает остальные поля в нуль.Jackson CSV missing columns
Синтаксический код:
CsvMapper csvMapper = new CsvMapper();
csvMapper.addMixInAnnotations(Person.class, PersonCsvMixin.class);
CsvSchema schema = csvMapper.schemaFor(Person.class).withHeader();
MappingIterator<Person> it = csvMapper.reader(dataClass).with(schema).readValues(csv);
LinkedList<Person> output = new LinkedList<>();
while(it.hasNext()) {
output.push(it.next());
}
Mixin:
import com.fasterxml.jackson.annotation.*;
@JsonPropertyOrder(value = { "FirstName", "LastName", "Title"})
public abstract class Person {
@JsonProperty("LastName")
public abstract String getLastName();
@JsonProperty("FirstName")
public abstract String getFirstName();
@JsonProperty("Title")
public abstract String getTitle();
}
класс данных:
public class OfficespaceInputEmployee implements Serializable{
protected String firstName;
protected String lastName;
protected String title;
// .. getters and setters
}
Если я разобрать файл как следующий, никаких ошибок не происходит, даже при том, что средний запись отсутствует два поля. Вместо этого, LastName и титульный стать null
"FirstName", "LastName", "Title"
"John", "Smith", "Mr"
"Mary"
"Peter", "Jones", "Dr"
Есть ли функция, чтобы позволить, что приведет это к ошибкам, а?
Показать использование MappingIterator. –
@LaurentiuL. добавлено MappingIterator use – rewolf