【发布时间】:2015-08-26 19:28:00
【问题描述】:
我正在使用Jackson CSV 将 CSV 文件解析为 POJO。我的问题是,如果 CSV 中的一行的列太少,解析器不会抱怨,只会将其余字段设置为 null。
解析代码:
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
}
如果我解析如下文件,即使中间记录缺少两个字段,也不会发生错误。相反,LastName 和 Title 变为 null
"FirstName", "LastName", "Title"
"John", "Smith", "Mr"
"Mary"
"Peter", "Jones", "Dr"
是否有启用会导致此错误的功能?
【问题讨论】:
-
显示您的 MappingIterator 使用情况。
-
@LaurentiuL。添加了 MappingIterator 用法