首页 > 解决方案 > 杰克逊CSV反序列化忽略标题顺序

问题描述

我正在尝试将 csv(tsv) 文件反序列化为不可变的 POJO。

Jackson 将值分配给错误的字段(它忽略了带注释的列标题名称) 类字段的写入顺序与文件中的顺序相同。

我真的需要为此创建一个自定义 CSV 架构吗?无论如何,“withHeader()”有什么意义,忽略第一行?

我尝试编辑 csv(tsv) 文件的标题,将名称更改为未注释的名称,但没有发生错误。

@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
public Person(@JsonProperty("name") String name, 
        @JsonProperty("address") String address, 
        @JsonProperty("phone") String phone) {
    this.name = name;
    ...
}


CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(Person.class).withColumnSeparator('\t').withHeader();
MappingIterator<Person> it = mapper.readerFor(Person.class).with(schema).readValues(file);

标签: csvjackson

解决方案


推荐阅读