Tôi đang sử dụng Jackson CSV để phân tích tệp CSV thành các POJO. Vấn đề của tôi là nếu một hàng trong CSV có quá ít cột, trình phân tích cú pháp không phàn nàn và chỉ đặt phần còn lại của trường thành null.Các cột bị thiếu trong CSV của CSV
đang Phân tích:
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();
}
lớp dữ liệu:
public class OfficespaceInputEmployee implements Serializable{
protected String firstName;
protected String lastName;
protected String title;
// .. getters and setters
}
Nếu tôi phân tích một tập tin như sau, không có lỗi xảy ra mặc dù kỷ lục giữa thiếu hai trường. Thay vào đó, LastName và Title trở thành null
"FirstName", "LastName", "Title"
"John", "Smith", "Mr"
"Mary"
"Peter", "Jones", "Dr"
Có tính năng nào để kích hoạt lỗi này thay vào đó không?
Hiển thị mức sử dụng Trình ánh xạ của bạn. –
@LaurentiuL. thêm cách sử dụng MappingIterator – rewolf