Ich verwende Jackson CSV, um eine CSV-Datei in POJOs zu analysieren. Mein Problem ist, dass, wenn eine Zeile in der CSV zu wenig Spalten hat, der Parser sich nicht beschwert und nur den Rest der Felder auf null setzt.Jackson CSV fehlende Spalten
Parsing-Code:
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();
}
Datenklasse:
public class OfficespaceInputEmployee implements Serializable{
protected String firstName;
protected String lastName;
protected String title;
// .. getters and setters
}
Wenn ich eine Datei wie folgt analysieren, treten keine Fehler auf, obwohl der mittlere Rekord fehlen zwei Felder. Stattdessen Name und Titel werden null
"FirstName", "LastName", "Title"
"John", "Smith", "Mr"
"Mary"
"Peter", "Jones", "Dr"
Gibt es ein Merkmal, das zu ermöglichen, führt dies stattdessen auf Fehler?
Zeigen Sie Ihre MappingIterator-Nutzung. –
@LaurentiuL. MappingIterator Verwendung hinzugefügt – rewolf