Sto utilizzando Jackson CSV per analizzare un file CSV in POJO. Il mio problema è che se una riga nel CSV ha troppe poche colonne, il parser non si lamenta e imposta semplicemente il resto dei campi su null.Jackson CSV colonne mancanti
codice di analisi:
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();
}
classe di dati:
public class OfficespaceInputEmployee implements Serializable{
protected String firstName;
protected String lastName;
protected String title;
// .. getters and setters
}
Se io analizzare un file come il seguente, non si verificano errori, anche se il record di mezzo mancano due campi. Invece, Cognome e titolo diventano null
"FirstName", "LastName", "Title"
"John", "Smith", "Mr"
"Mary"
"Peter", "Jones", "Dr"
C'è una funzione per consentire che causerà questo errore invece?
Mostra l'utilizzo di MappingIterator. –
@LaurentiuL. aggiunto utilizzo di MappingIterator – rewolf