我使用Jackson CSV將CSV文件解析爲POJO。我的問題是,如果CSV中的一行的列數太少,解析器不會發出抱怨,而只是將其餘字段設置爲空。傑克遜CSV缺失列
解析代碼:
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());
}
密新:
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
}
如果我解析文件類似下面的,不會發生錯誤,即使中間記錄缺少兩個字段。相反,姓氏和職務成爲null
"FirstName", "LastName", "Title"
"John", "Smith", "Mr"
"Mary"
"Peter", "Jones", "Dr"
有一個特點,使這將導致這種情況,而不是錯誤?
顯示您的MappingIterator用法。 –
@LaurentiuL。添加了MappingIterator用法 – rewolf