在java中读取具有已知和未知列的CSV文件

Gal*_*sin 3 java csv spring opencsv

我想知道是否有一种方法可以读取包含已知和未知列的 csv 文件。

例如,第一个 csv 文件中的列是: id、名字、姓氏、城市、国家/地区未知列是城市和国家/地区

第二个 csv 文件是:

id、名字、姓氏、电话号码未知列是电话号码

我想要解析的对象是:

public class Person {

    Long id;
    String firstname;
    String lastname;

    Map<String,String> additionalInfo;

}
Run Code Online (Sandbox Code Playgroud)

extraInfo 映射将包含“未知”列作为键,值将是该列中的行值。

有任何想法吗?

谢谢。

Tim*_*ler 6

OpenCSV 允许您使用注释执行类似的操作@CsvBindAndJoinByName。摘自文档

public class Demonstration {

   @CsvBindByName(column = "index")
   private String index;

   @CsvBindAndJoinByName(column = ".*", elementType = String.class)
   private MultiValuedMap<String, String> theRest;

   // Getters and setters go here
}
Run Code Online (Sandbox Code Playgroud)

相同的文档提到了一个警告:如果有多个,则必须小心不要有重叠的模式@CsvBindAndJoinByName,否则结果是未定义的。