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 映射将包含“未知”列作为键,值将是该列中的行值。
有任何想法吗?
谢谢。
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,否则结果是未定义的。