有人可以帮忙吗?我坚持阅读 csv 文件并将其序列化到 POJO 上。我正在使用杰克逊库中的 CsvMapper。读取和序列化部分已完成并且工作正常。问题是当用户移动标题/列时,导致序列化做出一些按字母顺序排列的假设,即 CSV 文件上的值也是按字母顺序排列的。
例如(下面的文件在第一行有标题,第二行有人员详细信息值)
personNameHeader,personAgeHeader
Wiliam,32
现在我的 POJO 如下
@JsonIgnoreProperties(ignoreUnknown = true)
// @JsonPropertyOrder(value = {"personNameHeader", "personAgeHeader" })
public class PersonDetailsCSVTemplate {
@JsonProperty("personNameHeader")
private String name;
@JsonProperty("personAgeHeader")
private String age;
//Public constructor and getters and setters...
这是从 CSV 读取值并映射到类的代码
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
...
CsvMapper csvMapper = new CsvMapper();
CsvSchema schema = csvMapper.typedSchemaFor(PersonDetailsCSVTemplate.class).withHeader();
MappingIterator<PersonDetailsCSVTemplate > dataIterator = csvMapper.readerFor(PersonDetailsCSVTemplate.class).with(schema)
.readValues(data);
while (dataIterator.hasNextValue()) {
PersonDetailsCSVTemplate dataCSV = dataIterator.nextValue();
}
在序列化之后,可以看到 CsvMapper 映射了以下内容:
PersonDetailsCSVTemplate.name = "32"
和PersonDetailsCSVTemplate.age = "Wiliam"
通过使用@JsonPropertyOrder(value = {"personNameHeader", "personAgeHeader" })
强制 CSV 始终为名称列后跟年龄列来注释类,这是不理想的。
任何人都可以提出他们认为可行的任何建议吗?问候